繁体   English   中英

转换Long-> Hex,然后将该Hex分配给C中的Char

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM