我有一个存储在两个字节数组中的十六进制值:
unsigned char hex[2] = {0x02, 0x00};
如何将其转换为十进制值?
答案 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;