繁体   English   中英

C#整数掩码到字节数组

[英]C# integer masking into byte array

我对为什么这种方法不起作用感到困惑,有人可以提供一些见解吗?

我有一个接受整数值的函数,但想将十六进制值的高两位存储到字节数组元素中。

假设距离是(24,135) 10或(5E47) 16

public ConfigureReportOptionsMessageData(int Distance, int DistanceCheckTime)
    {
        ...
        this._data = new byte[9];
        this._data[0] = (byte)(Distance & 0x00FF); // shows 47
        this._data[1] = (byte)(Distance & 0xFF00); // shows 00
        this._data[2] = (byte)(DistanceCheckTime & 0xFF);
        ...
    }

看来您应该使用BitConverter.GetBytes-它会提供一个更简单的选项。

this._data[1] = (byte)(Distance >> 8);

_data[1]获得0的原因是,当您转换为byte时,高3个字节会丢失。

您的中间结果如下所示:

Distance && 0xff00 = 0x00005e00;

当将其转换为字节时,您仅保留低位字节:

(byte)0x00005e00 = 0x00;

您需要移动8位:

0x00005e00 >> 8 = 0x0000005e;

在转换为byte并分配给_data[1]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM