如何在C#中将3个字节转换为24位数?
我有一个字节数组,我从消息的标题部分读取。 这些字节包含消息的长度。 从不超过3个字节,它们从LSB到MSB排序。 因此在下面的示例中,39是LSB,2是MSB。
var data = new byte[] { 39, 213, 2 };
在上面的例子中,我如何获取这些字节并转换为数字(int,short等)?
var num = data[0] + (data[1] << 8) + (data[2] << 16);
使用像BitConverter.ToInt32这样的方法,但要意识到32位数量需要4个字节。
var data = new byte[] {39, 213, 2, 0}; int integer = BitConverter.ToInt32(data, 0);
还有其他方法可以转换为其他类型,如Single和Double 。
使用左移运算符和or运算符:
int d = (data[2] << 16) | (data[1] << 8) | data[0]
显然,你可以在这里做各种各样的事情,比如使用循环等:)
像这样的东西应该工作:
data[0] + 256*data[1] + 256*256*data[2]
您的编译器应该将其优化为“正确”位操作。
BitConverter为您处理字节序,这就是为什么它要走的路。
虽然你需要4个字节,但是
上述就是C#学习教程:如何在C#中将3个字节转换为24位数?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
BitConverter.ToInt32(new byte[1] { 0 }.Concat(yourThreeByteArray).ToArray());
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/990650.html