Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将十进制整数转换为单个十六进制字符?(C)_C_Decimal_Character_Hex - Fatal编程技术网

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

如何将十进制整数转换为单个十六进制字符?(C),c,decimal,character,hex,C,Decimal,Character,Hex,我正在尝试将十进制整数转换为十六进制。我在网上做了很多搜索,找到了很多方法。然而,我发现的每一种方法都转换成字符串;例如,我可以将100转换为“64”。那不是我需要做的。我希望能够将100转换为“0x64”,这是一个完全不同的问题。出于某种原因,我怀疑答案非常简单,但我似乎找不到/记不起来了。我是用C语言写的,只是想澄清一下。任何帮助或想法都将不胜感激 谢谢, C语言中的Hassan整数类型实际上没有基础。当你说: int a = 100; int b = 0x64; …a和b具有相同的值。谈

我正在尝试将十进制整数转换为十六进制。我在网上做了很多搜索,找到了很多方法。然而,我发现的每一种方法都转换成字符串;例如,我可以将100转换为“64”。那不是我需要做的。我希望能够将100转换为“0x64”,这是一个完全不同的问题。出于某种原因,我怀疑答案非常简单,但我似乎找不到/记不起来了。我是用C语言写的,只是想澄清一下。任何帮助或想法都将不胜感激

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

int a = 100;
int b = 0x64;
a
b
具有相同的值。谈论将
a
转换为十六进制(或
b
转换为十进制)没有任何意义

int i = 100;
char c = i; // c now has the value 0x64 (aka decimal 100)
除了确保
i
不大于255之外,您真的不需要做任何其他事情

只有在打印或以其他方式向人显示数字时,数字基数才真正起作用。就内存中的数字而言,100是0x64是0144是1100100。它们都是相同的值,所以它们都由相同的一组位表示


这就像问你如何用西班牙语显示绿色一样。绿色是绿色,无论你用什么语言,绿色都是绿色。只有当你试图想出一种方法把它作为一个词来写时,你才需要考虑你要使用什么语言。数字也是如此,它决定了你要使用哪个基数。

100
十进制是
0x64
十六进制,不需要“转换”。整数的基数只是一个解释问题。

不能将数字从十进制“转换”为十六进制,因为它是。。。一个数字(通常作为数字存储在存储器中)。在所有可能情况下,相同数字的所有表示都位于数字线上的同一点上。不过,您可以在不同的基础上打印它:

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) */

我很遗憾地承认这一点,但我编写了一系列方法,通过将十六进制字符串解析为其等效数字来实现您所描述的功能。我需要它来创建一个图形计算器来检查从一些旧的晦涩格式到当前/通用IEEE格式的浮点转换。我想分享代码,但它是用c写的。