好吧,這是我的問題。我從文件中讀取兩個字節。Int16緩衝區幫助(BE)
比方說,這些字節「FD 37」 - 這應該是:64823
我在大端讀書,所以我嘗試陣列倒車小端,然後試圖位動作。我確實需要幫助,因爲我無法得到這個。任何幫助表示讚賞。
(是的,我知道這是一個貧民窟陣列逆轉..)
static void Reverse(BYTE* &buffer, long length)
{
BYTE *obuff = new BYTE[length];
for(int i=0; i<length; i++)
obuff[length-i-1] = buffer[i];
obuff[length] = '\0';
buffer = obuff;
}
typedef signed short int Int16;
Int16 ReadInt16()
{
Int16 val;
BYTE* bytes = new BYTE[2];
Read(bytes, 0, 2); //just stores 2 bytes into bytes and advances buffer 2 positions.
Array::Reverse(bytes,2);
val = bytes[0] | (bytes[1] << 8);
return val;
}
我使用該方法的結果是-753
什麼想法?
'obuff [length] ='\ 0';'是啓動的一個非常糟糕的主意。新數組的最後一個元素是'obuff [length-1]'。如果它不是一個字符串,你也不需要在數組末尾有'\ 0'。 – shinjin 2013-02-14 07:11:23
謝謝,我第一次學習的時候就寫了。我會用它! :) – MysteryDev 2013-02-14 07:20:27