在int32变量中转换十六进制的字节表示

时间:2013-10-22 07:05:59

标签: c

char buffer[8];
memcpy(&buffer[0], "02000000", 8); //copy without '\0' 

我们如何将缓冲区中的字节解释为0x00000002并将其放入int?

类型的变量中

1 个答案:

答案 0 :(得分:2)

您将其设为字符串(使用终止'\0')并使用strtol进行转换。


字节交换整数很简单:

#define SWAP16(x)  (((x) & 0xff00) >> 8) | (((x) & 0x00ff) << 8)
#define SWAP32(x)  (SWAP16(((x) & 0xffff0000) >> 16)) | (SWAP16((x) & 0x0000ffff) << 16)

uint32_t value = SWAP32(strtol("02000000", NULL, 16));