将char数组中的十六进制值转换为整数值

时间:2011-04-26 00:10:01

标签: c hex arrays

我有一个存储在两个字节数组中的十六进制值:

unsigned char hex[2] = {0x02, 0x00};

如何将其转换为十进制值?

3 个答案:

答案 0 :(得分:6)

您可以使用(按位操作)

int b = (hex[0] << 8) | hex[1];

或(简单数学)

int b = (hex[0] * 0x100) + hex[1];

答案 1 :(得分:0)

取决于endian-ness,但这样的事情呢?

short value = (hex[0] << 16) & hex[1];

答案 2 :(得分:0)

这不是一种有效的方式,至少我认为不是这样,但无论数组的大小如何,它都适用于所有情况,并且很容易转换为b。

__int8 p[] = {1, 1, 1, 1, 1}; //Let's say this was the array used.
int value = sizeof(p); //Just something to store the length.
memcpy(&value, &p, value > 4 ? 4 : value); //It's okay to go over 4, but might as well limit it.

在上面的例子中,变量“value”的值为16,843,009。这相当于如果您已完成以下操作。

int value = p[0] | p[1] << 0x8 | p[2] << 0x10 | p[3] << 0x18;