【发布时间】:2011-02-14 00:06:59
【问题描述】:
大规模编辑:
我有一个 long int 变量,我需要将其转换为一个有符号的 24 位十六进制字符串,并且开头没有“0x”。字符串必须为 6 个字符,后跟字符串终止符 '\0',因此需要添加前导零。
示例: [-1 -> FFFFFF] --- [1 -> 000001] --- [71 -> 000047]
回答 这似乎可以解决问题:
long int number = 37;
char string[7];
snprintf (string, 7, "%lX", number);
【问题讨论】:
-
只是为了澄清,你所说的签名十六进制是什么意思,例如-1 应该转换成什么?
-
FFFFFF(如果我已经完成了我的转换:s)
-
好的,这看起来像是转换为无符号长整数并打印无符号十六进制数。
-
所以你真的想要一个 24 位的十六进制字符串?
-
%lx转换需要unsigned long,但您传递给它的是long。尽管它按原样为您工作,但为了形式上的正确性,需要转换为unsigned long。您当前的方法也会为大多数负数提供错误的值 - 例如尝试 -256。
标签: c integer hex typeconverter