簡體   English   中英

c#合並字節數組並轉換為16位整數

[英]c# Combine byte array and convert to a 16-bit Integer

可以說我有一個像這樣定義的字節數組:

byte[] byteArray = { 0x08, 0x00 };

我需要結合數組中的元素來創建:

0x0800

然后將其轉換為一個int:

2048

像這樣:

    private static int GetMessageType(byte[] byteArray)
    {
        if(byteArray.Length != 2)
            throw new ArgumentOutOfRangeException("byteArray");

        throw new NotImplementedException();
    }

為什么不只使用簡單的按位運算符呢? 例如

byte hiByte = byteArray[0];  // or as appropriate
byte lowByte = byteArray[1];
short val = (short)((hiByte << 8) | lowByte);

在這種情況下,按位結果被視為[帶符號的] short (跟隨標題?),並且可能會導致負值,但是可以通過刪除強制轉換來根據需要進行更改。

您應該使用BitConverter.ToInt16 ,但似乎需要BigEndian轉換。 因此,請使用Jon Skeet的EndianBitConverterhttp : //www.yoda.arachsys.com/csharp/miscutil/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM