[英]Convert byte array to ushort array in C# .Net Microframework
我需要將字節數組轉換為UInt16(ushort)數組。 我能夠做到從字節數組到UInt32數組。
我已經看過這個問題了 。 但是我不能使用BitConverter或所引用問題中給出的解決方案。
到目前為止,這是我嘗試過的。
for (uint objIndex = 0; objIndex < data.Length; ++objIndex)
{
data[objIndex] = (Convert.ToUInt16(byteArray[objIndex * sizeof(UInt16) + 0].ToString()) << 8)
+ byteArray[objIndex * sizeof(UInt16) + 1];
// Error - Cannot implicitly convert type 'int' to 'ushort'. An explicit conversion exists.
data[objIndex] = ((ushort)(byteArray[objIndex * sizeof(UInt16) + 0]) << 8)
+ byteArray[objIndex + 1];
// Error - Cannot implicitly convert type 'int' to 'ushort'. An explicit conversion exists.
}
請讓我知道這里缺少什么。
編輯:將每個數字強制轉換為ushort后,如下所示,我能夠對其進行修復。
for (ushort objIndex = 0; objIndex < data.Length; ++objIndex)
{
ushort length = sizeof(UInt16);
data[objIndex] = (ushort)( (ushort)(byteArray[objIndex * length] << (ushort)8) +
byteArray[objIndex + 1] );
}
簽出Buffer.BlockCopy() 。 您可以將內容( byte[]
)轉儲為其他格式( UInt16[]
)。
例:
var input = byte[1024];
var output = ushort[1024 / 2]; // every ushort is 2 bytes
Buffer.BlockCopy(input, 0, output, 0, 1024);
最終,事實證明這是一個非常簡單的修復程序(現在感覺很傻)。 在將我使用的每個數字強制轉換為ushort后,如下所示,我能夠使編譯器錯誤消失。
for (ushort objIndex = 0; objIndex < data.Length; ++objIndex)
{
ushort length = sizeof(UInt16);
data[objIndex] = (ushort)( (ushort)(byteArray[objIndex * length] << (ushort)8) +
byteArray[objIndex + 1] );
}
或這個。
for (ushort objIndex = 0; objIndex < data.Length; ++objIndex)
{
data[objIndex] = (ushort)((byteArray[objIndex * sizeof(UInt16)] << 8) +
byteArray[objIndex + 1] );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.