0

さて、ここに私の問題があります。ファイルから 2 バイトを読み取りました。

それらのバイトが「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です

何か案は?

4

1 に答える 1

3

符号なしの数値が必要な場合は、符号付きではなく符号なしの型を使用する必要があります。

于 2013-02-14T07:07:03.027 に答える