将short的十六进制值分配给short [关闭]

Posted

技术标签:

【中文标题】将short的十六进制值分配给short [关闭]【英文标题】:Assigning hex value of short to short [closed] 【发布时间】:2013-12-07 05:51:34 【问题描述】:
 short c = 34;

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

喜欢

   short d = 22;

【问题讨论】:

为什么不 d = 0x22;工作” 如何通过转换'c'变量来做到这一点? short c = 10; 十六进制是0x0A - 你打算如何转换它? 但是十六进制值也是10。我遇到这种情况将十六进制的short值分配给short。我正在为 c > 16 做。 @John Victor 十进制 10 的十六进制值是 0xA,如上所述。 【参考方案1】:

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

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

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

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

【讨论】:

哦。但是,是否有可能将值 22 分配给 short ?无需打印。只是分配。 @JohnVictor 不,因为你永远不需要这个。如果是c = 10,您希望将哪个值分配给d @JohnVictor:您必须使用正确的术语来描述您想要的内容。要将数字 22 放入d,只需使用d = 22;。如果c 具有十进制数字 34 的值,并且您想将十六进制数字 22 的值放入d,只需使用d = c;。之所以可行,是因为十进制 34 和十六进制 22是一回事。如果您想将c 中的值转换为十六进制数字,然后将该文本重新解释为十进制数字,您可以使用sprintfscanf 执行此操作。如果十六进制数字包含从 A 到 F 的任何数字,这将不起作用。 @JohnVictor:注意术语:数字是一个抽象的数学事物。 numeral 是表示数字的文本字符串short 对象不包含文本字符串;他们只持有数字。 我明白了。 :) 感谢您的宝贵回答。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

在输入时从人类形式到机器形式(人类 >> 机器) 在输出上从机器形式到人类形式(机器 >> 人类)

输出示例:

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

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

希望对你有帮助!

【讨论】:

【参考方案4】:

使用字符串缓冲区和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

【讨论】:

-1。 Try c = 10.

以上是关于将short的十六进制值分配给short [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

以最小的精度损失将 float 转换为 short [关闭]

`short` 类型的简写? [复制]

为啥可以通过构造函数将临时值分配给引用?

将短路分配给 int * 失败

为数组中的 unsigned char 分配一个 short 的结果是啥?

java 数据类型整理