我試圖嚴格寫入二進制數據到文件(無編碼)。問題是,當我十六進制轉儲文件,我注意到相當奇怪的行爲。使用下列方法之一來構造文件會導致相同的行爲。我甚至使用System :: Text :: Encoding :: Default來測試這些流。Visual Studio C++ 2008操縱字節?
StreamWriter^ binWriter = gcnew StreamWriter(gcnew FileStream("test.bin",FileMode::Create));
(Also used this method)
FileStream^ tempBin = gcnew FileStream("test.bin",FileMode::Create);
BinaryWriter^ binWriter = gcnew BinaryWriter(tempBin);
binWriter->Write(0x80);
binWriter->Write(0x81);
.
.
binWriter->Write(0x8F);
binWriter->Write(0x90);
binWriter->Write(0x91);
.
.
binWriter->Write(0x9F);
寫字節該序列,我注意到沒有轉換到0x3F的十六進制轉儲是0x81,0x8D,0x90,0x9D唯一字節...我不知道爲什麼。
我也嘗試製作字符數組,併發生類似的情況。即,
array<wchar_t,1>^ OT_Random_Delta_Limits = {0x00,0x00,0x03,0x79,0x00,0x00,0x04,0x88};
binWriter->Write(OT_Random_Delta_Limits);
0x88將被寫爲0x3F。
任何想法?
此外,我忽略了只有0x8和0x9字節序列似乎受到影響的事實。例如,0xF9或0xC3,就像他們應該寫的一樣。 0x3F是ASCII碼的?如果有人有興趣。 – 2009-11-04 21:27:36