首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在C#中将ushort值转换为两个字节值

在C#中将ushort值转换为两个字节值
EN

Stack Overflow用户
提问于 2013-09-03 16:36:20
回答 2查看 16.9K关注 1票数 6

如何在C#中将一个ushort拆分为两个字节的变量?

我尝试了以下方法(package.FrameID是ushort):

当我试着用纸和铅笔计算它时,我得到了正确的结果。此外,如果FrameID大于一个字节(因此第二个字节不是零),它就可以工作。

代码语言:javascript
代码运行次数:0
运行
复制
array[0] = (byte)(0x0000000011111111 & package.FrameID);
array[1] = (byte)(package.FrameID >> 8);

在我的例子中,package.FrameID是56,数组中的结果是16而不是56。

我该如何解决这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-03 16:45:17

0x0000000011111111不是二进制数,而是十六进制数。您需要改用0x0ff

但是,由于结果是一个字节,而且强制转换为一个字节无论如何都会丢弃高位,所以实际上不需要对结果执行and。你可以这样做:

代码语言:javascript
代码运行次数:0
运行
复制
array[0] = (byte)package.FrameID;
array[1] = (byte)(package.FrameID >> 8);

(这是假设您没有使用checked代码。如果是,则将大于255的值强制转换为byte将导致异常。您将知道您是否正在使用checked代码。)

票数 10
EN

Stack Overflow用户

发布于 2013-09-03 16:39:42

使用BitConverter

代码语言:javascript
代码运行次数:0
运行
复制
var bytes = BitConverter.GetBytes(package.FrameID);
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18587611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档