如何将十进制整数转换为单个十六进制字符?(C)

Has*_*san 2 c hex character decimal

我试图将十进制整数转换为十六进制.我已经在网上做了很多搜索,并找到了很多方法来做到这一点.但是,我发现的每一种方式都转换为字符串; 例如,我可以将100转换为"64".这不是我需要做的.我希望能够将100转换为'0x64',这是完全不同的事情.出于某种原因,我怀疑答案非常简单,但我似乎无法找到/记住它.我正在编写C编程语言,只是为了澄清.任何帮助或想法将不胜感激.

谢谢,哈桑

caf*_*caf 5

C语言中的整数类型实际上没有基础.当你说:

int a = 100;
int b = 0x64;
Run Code Online (Sandbox Code Playgroud)

......都ab具有相同的值.谈论转换a为十六进制(或b十进制)是没有任何意义的.


Nik*_*sov 5

您不能将数字从十进制"转换"为十六进制,因为它是一个数字(通常作为二进制存储在内存中).在所有可能的位置系统中,所有相同数字的表示都存在于数字线上的完全相同的点上.你可以用不同的基础打印它:

int num = 15;
printf( "%d", num );   /* prints 15 */
printf( "0x%x", num ); /* prints 0xf */
printf( "0%o", num );  /* prints 017 (octal) */

num = 0xf;
printf( "%d", num );   /* prints 15 */
printf( "0x%x", num ); /* prints 0xf */
printf( "0%o", num );  /* prints 017 (octal) */

num = 017;
printf( "%d", num );   /* prints 15 */
printf( "0x%x", num ); /* prints 0xf */
printf( "0%o", num );  /* prints 017 (octal) */
Run Code Online (Sandbox Code Playgroud)