你如何读取3字节大小的值作为c ++中的整数?

car*_*ted 7 c++ int byte id3

我正在读取id3标签,其中每个帧的大小以3个字节指定.我怎样才能将此值用作int?

Car*_*rum 10

读取每个字节,然后将它们放在一起int:

int id3 = byte0 + (byte1 << 8) + (byte2 << 16);
Run Code Online (Sandbox Code Playgroud)

确保考虑到字节顺序.


Jer*_*fin 6

单独读取字节,并将它们放入int中的正确位置:

int value = 0;

unsigned char byte1 = fgetc(ID3file);
unsigned char byte2 = fgetc(ID3file);
unsigned char byte3 = fgetc(ID3file);

value = (byte1 << 16) | (byte2 << 8) | byte3;
Run Code Online (Sandbox Code Playgroud)

编辑:似乎ID3使用网络(big-endian)字节顺序 - 更改的代码匹配.

  • C++人员可能讨厌使用`fgetc()`,但我和Jerry在一起. (2认同)