0

如何使用 C 语言将整数值转换为其对应的十六进制并将其存储在单字节变量中。

int nVar = 24; // where hex value 0x18

BYTE byRes; 

char sBuff[8] = {0};
sprintf(sBuff, "%x", nVar); 

其中 sBuff[0] = 0x30 和 sBuff[1] = 0x38 但这不是我想要的。我想将 nVar 的十六进制值保存在 byRes 变量中。

谢谢

4

2 回答 2

4

请注意,“十进制”或“十六进制”只是数字值的表示。换句话说,这些是在屏幕上显示的不同方式。int赋值byRes = (BYTE)nVar;复制nVarto的值byRes。如果需要,您可以将该值显示为十六进制或十进制或 base-7 或 base-42。现代计算机将数据存储为电压差。在机器级别,我们通常将这些数字视为“高”和“低”或“0”和“1”(也称为二进制),但在编程级别,我们可以以任何方式思考这些数值希望。将一个变量的“十六进制”值分配给另一个变量与分配“十进制”值相同,因为计算机不知道我们的想法关于价值,直到我们要求它显示它。当您这样做时(例如通过printf()调用),计算机会将值转换为 ASCII 字符,这些字符不再是我们正在处理的整数值。

于 2013-01-03T01:31:40.167 回答
1

C 中的所有数字(以及其他所有数字)都表示为二进制数字。0x18 和 24 的值相同。仅当您要将它们表示为字符串时才重要。

于 2013-01-03T01:32:19.540 回答