繁体   English   中英

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

[英]How do I convert a decimal integer into a single hexadecimal character? (C)

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

谢谢,哈桑

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

int a = 100;
int b = 0x64;

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

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

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

嗯,

int i = 100;
char c = i; // c now has the value 0x64 (aka decimal 100)

除了确保i不超过255之外,你真的没有别的事可做。

数字基础仅在打印或以其他方式向人类显示数字时才真正发挥作用。 就内存中的数字而言,100是0x64,0144是1100100.它们都是相同的值,因此它们都由相同的位组表示。

这就像问你将如何用西班牙语显示绿色。 无论您使用何种语言,绿色都是绿色。 只有当你试图想出一个把它写成一个单词的方法时,你必须考虑你将要使用的语言。 所以它是数字并决定你将使用哪个基数。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM