C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: バイト配列のデータを指定バイト数で出力するには?


(過去ログ 14 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■5019 / inTopicNo.1)  バイト配列のデータを指定バイト数で出力するには?
  
□投稿者/ JI (1回)-(2007/07/02(Mon) 19:24:49)

分類:[VB.NET (Windows)] 

WIN XP
VB2005

日本語データ6バイトを、3バイトづつに分割し出力するとデータが壊れてしまいます。
半角のみのデータですと上手くできたのですが、全角が含まれていると期待通りになりません。
日本語データをバイト配列に格納するまでは確認できました。(バイナリエディタと比較)

Dim chArray as Byte() = System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes("あいう")

chArray(0) = 130 0x82
chArray(1) = 160 0xA0
chArray(2) = 130 0x82
chArray(3) = 162 0xA2
chArray(4) = 130 0x82
chArray(5) = 164 0xA4

strOut = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(chArray, 0, 3)
outf.WriteLine(strOut)
strOut = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(chArray, 3, 3)
outf.WriteLine(strOut)

上記のようなソースで、出力ファイルへライトすると以下のようになります。
(HEX表記)
82 A0 81 45 0D 0A A2 82 A4 0D 0A

0x45が出力されないでほしいのです。
どのようにすればよろしいのでしょうか。
また、なぜ0x45が出力されてしまうのでしょうか。

よろしくお願いします。


引用返信 編集キー/
■5021 / inTopicNo.2)  Re[1]: バイト配列のデータを指定バイト数で出力するには?
□投稿者/ 魔界の仮面弁士 (324回)-(2007/07/02(Mon) 19:35:57)
String で処理する以上、どうにもなりません。

文字列型は内部 Unicode 固定ですし、文字数単位でしか管理されません。
Shift_JIS バイナリに対するバイト単位の処理が必要なら、Byte 配列や Stream を使うようにしましょう
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -