将短边的十六进制值分配给短边

Assigning hex value of short to short

本文关键字:分配 十六进制      更新时间:2023-10-16
 short c = 34;

c的十六进制值为22。 如何通过转换"c"将十六进制值分配给短变量(例如短 d(?

喜欢

   short d = 22;

short对象和其他整数对象没有十进制值或十六进制值。它们的值是纯数字。

11

、11 和 0xb 是同一数字的不同名称。

要为d分配与 c 相同的值,请使用 d = c;

使用 printf 打印时,可以将值格式化为十进制数字或十六进制数字。您可以将 c 的值打印为带有 printf("%x", c); 的十六进制数字。

从一个短到另一个短的分配时,你不需要做任何类型的转换。对于PC来说,它只是一个位的集合。如何解释它们(如十六进制、十进制等(是您编码的高级决策。如果您在"c"中有正确的十六进制(或其他(值,只需将其分配给"d"。

机器对数字系统一无所知。它们用于人类对数字的感知

您只能在发生人机交互时"翻译"数字:

  • 从人形到输入时的机器形态(人>>机器(
  • 从机器形态
  • 到输出上的人类形态(机器>>人(

输出示例:

short c = 10; // for you its "decimal ten" now, 
              // for machine is just a handful of bits
printf("d = %dn", c);   // you explicitly say here to output as decimal
printf("d = 0x%.4X", c); // you explicitly say here to output as hexadecimal

因此,与其尝试在程序的逻辑部分内部进行翻译,不如转到输出部分并在那里进行翻译。

希望对您有所帮助!

使用字符串缓冲区并sprintf十六进制格式。

然后用atoi写回去,如下所示

#include <stdio.h>
#include <stdlib.h>
int main()
{
  short c = 34;
  short d;
  char string[10];
  sprintf(string, "%x", c);
  d = atoi(string);
  printf("c = %dn", c);
  printf("d = %dn", d);
  return 0;
}

给出输出

c = 34
d = 22