簡體   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