いつも大変お世話になっております。
PadLeftについて質問させて頂いてもよろしいでしょうか。
using (BinaryWriter w = new BinaryWriter(File.OpenWrite(@"c:\data\test.dat")))
{
foreach (data Item in lst)
{
w.Write(Item.combobox1.PadLeft(15, '\0'));
・・・
}
}
上記のプログラムソースでdatファイルにコンボボックスやテキストボックスに書き込まれた文字や値を書き込んでいました。
アルファベットや数字の際は、「0」のパディングが入り書き込むことができたのですが、
日本語の場合、「0」のパディングが上手く入らず、データにずれが生じてしまいました。
「 w.Write(Item.combobox1.PadLeft(15, '\0'))」は、日本語では使用できないのでしょうか?
お手数おかけして申し訳ございませんが、ご指導ご鞭撻の程よろしくお願い致します。
以下がその例となります。
・ w.Write(Item.combobox1.PadLeft(15, '\0'))を使用。
・ 書き込む文字が「テスト」
すると以下のような結果となります。
=================================================
●追記2
kutsulogさんのお答えを元にプログラムを書き換えてみました。
Encoding enc = Encoding.GetEncoding("Shift_JIS");
foreach (data Item in lst) { w.Write(Item.joint_cb.PadLeft(15 - (enc.GetByteCount(Item.joint_cb) - Item.joint_cb.Length),'\0')); }
としたところ、3バイト短くなりましたが、以前15バイトに納められずにいます・・・
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/10 09:17
2015/11/10 09:22