指定short到short的十六进制值

时间:2013-12-07 05:51:35

标签: c++ c hex short

 short c = 34;

并且c的十六进制值是22.如何通过转换'c'将十六进制值分配给一个短变量(比如短d)?

   short d = 22;

4 个答案:

答案 0 :(得分:3)

short个对象和其他整数对象没有十进制值或十六进制值。他们的价值观纯正。

11,11和0xb是相同数字的不同名称。

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

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

答案 1 :(得分:1)

从一个短片分配到另一个短片时,您无需进行任何类型的转换。对于PC来说,它只是一个比特集合。你如何解释它们(如十六进制,十进制等)是你编写的高级决策。如果“c”中有正确的十六进制(或其他)值,只需将其指定为“d。”

答案 2 :(得分:1)

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

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

  • 从输入上的人形到机器形式(人类>>机器)
  • 从输出的机器形式到人形(机器>>人类)

输出示例:

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

因此,不要试图在程序的逻辑部分内部进行翻译,而是转到输出部分并在那里进行翻译。

希望它有所帮助!

答案 3 :(得分:-3)

使用字符串缓冲区和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 = %d\n", c);
  printf("d = %d\n", d);
  return 0;
}

给出输出

c = 34
d = 22