[英]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.