我有一个二进制文件,我从中加载unsigned char []和变量const uint32_t LITTLE_ENDIAN_ID = 0x49696949; 我需要将加载的char []中的前四个字符与给定的uint32_t进行比较。 这有可能吗?
答案 0 :(得分:0)
如果buff
是您的unsigned char[]
缓冲区,则可以执行以下操作:
memcmp((unsigned char*)&LITTLE_ENDIAN_ID, buff, 4) == 0
memcmp
在string.h
答案 1 :(得分:0)
无论如何,你想要的是:
unsigned char[] text = ...
uint32_t x = text[0] << 24 + text[1] << 16 + text[2] << 8 + text[3];
if (x == LITTLE_ENDIAN_ID)
// do something
或者同样的事情,但是
uint32_t x = text[3] << 24 + text[2] << 16 + text[1] << 8 + text[0];
或者我们可以做一些不寻常的事情,比如
union {
uint32_t int_value;
unsigned char[4] characters;
} converter;
unsigned char[] text = ...
converter x;
for (int i=0; i < 4; i++)
x.characters[i] = text[i];
if (x.int_value == LITTLE_ENDIAN_ID)
// do something
如果你真的想要测试当前系统的字节顺序,这可能更接近你想要的。