当前位置:  开发笔记 > 编程语言 > 正文

C++:如何将数组中的2个字节转换为unsigned short

如何解决《C++:如何将数组中的2个字节转换为unsignedshort》经验,为你挑选了1个好方法。



1> Johannes Sch..:

好吧,你正在将char扩大为一个短值.你想要的是将两个字节解释为short.static_cast无法投射unsigned char*unsigned short*.你必须施展void*,然后unsigned short*:

unsigned short *p = static_cast(static_cast(&packetBuffer[1]));

现在,您可以取消引用p并获取短值.但是这种方法的问题是你从unsigned char*转换为void*然后转换为某种不同的类型.标准不保证地址保持不变(此外,解除引用该指针将是未定义的行为).更好的方法是使用位移,这将始终有效:

unsigned short p = (packetBuffer[1] << 8) | packetBuffer[2];


我认为这个(以及其他答案)假设有一个endian-ness - big-endian.
换档部件是在所有硬件类型中可靠地处理此问题的正确方法.但是偏移量是0和1,而不是1和2 - 我会暂时编辑.
乔纳森,你的编辑错了.他想要2和3,而不是1和2.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有