shift-jisは可変長だから、自分で勝手に2バイト区切りにしては駄目
{stringsOriginal="ユニCodeのbyte変換";byte[]arrBytes=Encoding.Unicode.GetBytes(sOriginal);//foreach (byte b in bytesData) Debug.WriteLine(b);Debug.WriteLine(BitConverter.ToString(arrBytes));stringhexString=BitConverter.ToString(arrBytes).Replace("-","");Debug.WriteLine(hexString);byte[]repack=newbyte[hexString.Length/2];for(vari=0;i<hexString.Length/2;i++){varhexChar=hexString.Substring(2*i,2);repack[i]=Convert.ToByte(hexChar,16);}Debug.WriteLine(Encoding.Unicode.GetString(repack));//2バイトずつもどすbyte[]tmp=newbyte[2];for(inti=0;i<arrBytes.Length/2;i++){tmp[0]=arrBytes[2*i+0];tmp[1]=arrBytes[2*i+1];Debug.WriteLine(Encoding.Unicode.GetString(tmp));}}Debug.WriteLine("---");{stringsOriginal="シフトjisのbyte変換";byte[]arrBytes=Encoding.GetEncoding("Shift_JIS").GetBytes(sOriginal);//foreach (byte b in bytesData) Debug.WriteLine(b);Debug.WriteLine(BitConverter.ToString(arrBytes));stringhexString=BitConverter.ToString(arrBytes).Replace("-","");Debug.WriteLine(hexString);byte[]repack=newbyte[hexString.Length/2];for(vari=0;i<hexString.Length/2;i++){varhexChar=hexString.Substring(2*i,2);repack[i]=Convert.ToByte(hexChar,16);}Debug.WriteLine(Encoding.GetEncoding("Shift_JIS").GetString(repack));//shiftjisは可変長なので、2バイトで区切るとくしゃくしゃになるbyte[]tmp=newbyte[2];for(inti=0;i<arrBytes.Length/2;i++){tmp[0]=arrBytes[2*i+0];tmp[1]=arrBytes[2*i+1];Debug.WriteLine(Encoding.GetEncoding("Shift_JIS").GetString(tmp));}}
実行結果
E6-30-CB-30-23-FF-4F-FF-44-FF-45-FF-6E-30-62-00-79-00-74-00-65-00-09-59-DB-63
E630CB3023FF4FFF44FF45FF6E3062007900740065000959DB63
ユニCodeのbyte変換
ユ
ニ
C
o
d
e
の
b
y
t
e
変
換
---
83-56-83-74-83-67-6A-69-73-82-CC-62-79-74-65-95-CF-8A-B7
8356837483676A697382CC6279746595CF8AB7
シフトjisのbyte変換
シ
フ
ト
ji
s・
フb
yt
e・
マ・