我在将十六进制字节转换为 int 以便计算总和时遇到问题。
我在 char 数组中有这个十六进制字节,但在将它们转换为十进制(int)并对它们求和时遇到问题。这是一些代码行:
int main() {
char recv[4] = {0x00, 0x03, 0x9e, 0x40};
int d1 = recv[0] * 256;
int d2 = recv[1] * 256;
int d3 = recv[2] * 256;
int d4 = recv[3] * 1;
int dt = d1 + d2 + d3 + d4;
printf("d1: %d\n", d1);
printf("d2: %d\n", d2);
printf("d3: %d\n", d3);
printf("d4: %d\n", d4);
printf("sum is: %d\n", dt);
return 0;
这是我得到的结果:
d1: 0
d2: 768
d3: -25088
d4: 64
sum is: -24256
最佳答案
#include <stdio.h>
int main(void)
{
char recv[4] = {0x00, 0x03, 0x9e, 0x40};
unsigned int result;
result = ((unsigned char)recv[0] << 24) |
((unsigned char)recv[1] << 16) |
((unsigned char)recv[2] << 8) |
((unsigned char)recv[3] << 0);
printf("0x%08X\n", result);
return 0;
}
输出
(link)
Success #stdin #stdout 0s 4568KB
0x00039E40
关于c - 如何将十六进制字节 {0x00, 0x03, 0x9e, 0x40} 转换为 int 以在 c 中进行计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57691147/