【发布时间】:2013-12-26 16:39:41
【问题描述】:
我需要将字节数组转换为 UInt16 (ushort) 数组。我可以从字节数组到 UInt32 数组。
我已经看过this SO question。但我不能使用 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] );
}
【问题讨论】:
-
您尝试过编译器建议的类型转换吗?即:
data[objIndex] = (ushort) (((ushort)(byteArray[objIndex * sizeof(UInt16) + 0]) << 8) + byteArray[objIndex + 1]; ) -
请不要编辑您的问题,而是将解决方案发布为 aswer。
-
是的,我试过了,还是不行。但是我能够使编译器错误消失。现在我必须测试它是否有效。