C - 将long int转换为带符号的十六进制字符串

Che*_*tah 7 c hex integer typeconverter

大规模编辑:

我有一个long int变量,我需要将其转换为带符号的24位十六进制字符串,开头没有"0x".字符串必须是6个字符后跟一个字符串终止符'\ 0',因此需要添加前导零.

示例:[ - 1 - > FFFFFF] --- [1 - > 000001] --- [71 - > 000047]

答案 这似乎可以解决问题:

long int number = 37;
char string[7];

snprintf (string, 7, "%lX", number);
Run Code Online (Sandbox Code Playgroud)

小智 10

看看sprintf.该%lx说明符你想要做什么.

  • 此外,如果可以的话,你应该使用`snprintf`而不是`sprintf`. (2认同)

CB *_*ley 9

因为您只需要六位数,所以您可能需要进行一些屏蔽以确保数字符合您的要求.像这样的东西:

sprintf(buffer, "%06lx", (unsigned long)val & 0xFFFFFFUL);
Run Code Online (Sandbox Code Playgroud)

请注意,您将所有长整数映射到一小部分表示中.在打印之前,您可能需要检查数字是否在特定范围内(例如-2 ^ 23 <x <2 ^ 23 - 1)