永发信息网

C++中如何把十进制整形转换为十六进制整形,然后把16进制数0x0000的高两位和低两位分开存储给两个整形变量

答案:5  悬赏:80  手机版
解决时间 2021-12-03 05:38
  • 提问者网友:世勋超人
  • 2021-12-03 00:38
C++中如何把十进制整形转换为十六进制整形,然后把16进制数0x0000的高两位和低两位分开存储给两个整形变量
最佳答案
  • 五星知识达人网友:忘川信使
  • 2021-12-03 02:15
程序内部并不需要进行任何转换。
你的问题主要集中在如何把一个unsigned int型(32位数据,即0x0000)数据的高位和低位提取出来。

方法如下:
int a,b,c;
a=345;//这里可以输入其他数据
b=a&0x00ff;//b即为a的低位
c=(a&0xff00)>>16;//c即为a的高位
全部回答
  • 1楼网友:往事埋风中
  • 2021-12-03 05:09
你的10进制整数是2个字节的是吗?
也就是16位的数,转存成2个8位的数据?分别存储高低字节?
unsigned short u16=0x1020;
unsigned char a,b;
a=(u16>>8)&0xff;
b=u16&0xff;

a=0x10
b=0x20
(因特尔格式)
这样不可以吗?
  • 2楼网友:三千妖杀
  • 2021-12-03 03:58
能不能用一个unsigned short指针; unsigned short* a = (unsigned short *)malloc(sizeof(int));
直接指向一个已经存在的int类型的变量, int b = 123484;
然后再取两个int变量i和j;
分别取出 i = *a---->低两位和 j = *(a+1)---->高两位???
  • 3楼网友:封刀令
  • 2021-12-03 03:41
非显示作用就不用转十六进制了
像0x0000、0xFFFF 这样的,可以认为是16位整数

16位整数 取高8位 用HIBYTE, 取低8位用LOBYTE
32位整数 取高16位 用HIWORD, 取低16位用LOWORD
  • 4楼网友:北方的南先生
  • 2021-12-03 03:29
在内存中不存在10进制还是16进制,都是以2进制存储的,所以如果不是做显示用的不需要再转换了,如果只是想把高低两位分别存储给两个变量,用如下方式即可

int i= 1000000;
short l=0,h=0;
h=*(short*)&i;
l=*(((short*)&i)+1);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯