怎么样将两个8位数拼接成一个16位的数

C语言 码拜 4年前 (2017-04-15) 538次浏览
怎么样将两个8位数拼接成一个16位的数
本人现在正在研究ZigBee 2007协议,需要一个成功的范例。谢谢
解决方案

10

unsigned char uc[2]={0x10,0xA0};
unsigned short us1,us2;
unsigned char *p;
p=(unsigned char *)&us1;
p[0]=uc[0];p[1]=uc[1];
p=(unsigned char *)&us2;
p[0]=uc[1];p[1]=uc[0];
printf("%hu(%04hx),%hu(%04hx)\n",us1,us1,us2,us2);

10

unsigned char hi = 0x15;
unsigned char lo = 0x51;
unsigned short  i = 0;
i |= hi << 8;
i |= lo;

10

char buf[24]
snprintf(buf, 24, “%d%08d”, num1, num2);

5

(a << 8) | b

5

引用:
unsigned char uc[2]={0x10,0xA0};
unsigned short us1,us2;
unsigned char *p;
p=(unsigned char *)&us1;
p[0]=uc[0];p[1]=uc[1];
p=(unsigned char *)&us2;
p[0]=uc[1];p[1]=uc[0];
printf("%hu(%04hx),%hu(%04hx)\n",us1,us1,us2,us2);
引用:
unsigned char hi = 0x15;
unsigned char lo = 0x51;
unsigned short  i = 0;
i |= hi << 8;
i |= lo;
引用:

char buf[24]
snprintf(buf, 24, “%d%08d”, num1, num2);

引用:

(a << 8) | b

题主并没有说明他所采用的编译环境和执行环境。
所以,
本人想知道,
假如他所采用的C的实现
一个字节是9位,或更多位(有的机器可以达到18位)
该怎么办?
不要说本人钻牛角尖,也不要说没有这样的CPU架构。
本人只想说,
你们错了,
这样的机器是有的。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么样将两个8位数拼接成一个16位的数
喜欢 (0)
[1034331897@qq.com]
分享 (0)