[英]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的EndianBitConverter
: http : //www.yoda.arachsys.com/csharp/miscutil/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.