[英]Converting Long -> Hex, then assigning that Hex to a Char in C
我正在使用一个计算16位CRC校验和的函数。
该函数产生一个包含校验和(以10为底的数字格式)的LONG。 当然,可以将其打印为十六进制形式的控制台内容,如下所示:
printf("Checksum: 0x%x\n", crctablefast((unsigned char *)string, datalength));
对于要检查的给定20字节char数组,它将产生十六进制格式的校验和23277:
Checksum: 5AED
我需要将校验和作为char存储在char数组的第21和22位,如下所示:
Char [20] = 0x5A
Char [21] = 0xED
问题是像scanf和sscanf这样的函数,我能做的最好的就是按字面值分配字符,如下所示:
Char [20] = "0x5A"
Char [21] = "0xED"
...这不好
我怎样做才能一次取两个字符,并用这些字符为一个char分配一个十六进制值? 还是总体上有一种更简单的方法?
先感谢您!
可以像这样将其保存到字符或char数组中:
字符[20] =(char)0x5A; 字符[21] =(char)0xED;
这样,它将保存与十六进制整数值等效的字符,您可以通过强制转换并使用它来将其转换回来。
嗯,背景中没有东西是十六进制的,机器中的所有东西都是二进制的,而人类则以十进制表示。 因此,十六进制是人机界面,仅表示形式。
使用位掩码:
ch[20] = (crc >> 8) & 0xff;
ch[21] = crc & 0xff;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.