v64*_*v64 1 c hex scanf decimal
我按照代码中概述的方式给出了一个包含4位十六进制数字的字符串hex_txt,分成两个数组条目.我需要将其转换为十进制.以下是我这样做的方式.
unsigned char hex_txt[] = "\xAB\xCD";
unsigned char hex_num[5];
unsigned int dec_num;
sprintf(hex_num, "%.2x%.2x", (int)hex_txt[0], (int)hex_txt[1]);
printf("%s\n", hex_num);
sscanf(hex_num, "%x", &dec_num);
printf("%d\n", dec_num);
Run Code Online (Sandbox Code Playgroud)
有更快,更有效的方法吗?这是我目前的临时解决方案,但我想知道是否有正确的方法来做到这一点.
int result = (unsigned char)hex_txt[0] * 256 + (unsigned char)hex_txt[1];
Run Code Online (Sandbox Code Playgroud)
该字符串hex_txt包含两个字节; 我猜这个命令是big-endian(如果它是little-endian则反转下标).字符代码为hex_txt[0]0xAB,为hex_txt[1]0xCD.使用unsigned char强制转换可确保您不会被签名字符弄乱.
或者,一次完成所有操作:
printf("%d\n", (unsigned char)hex_txt[0] * 256 + (unsigned char)hex_txt[1]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20928 次 |
| 最近记录: |