我有一个ushort数组,它在command.Data []中包含两个数组项。 我能够将这两个项目值组合在一起,并将32Bit Big Endian值作为UInt32,并使用以下代码。
UInt32 param32BitValue= (UInt32)command.Data[0] << 32 | command.Data[1];
我有另一个参数,它在ushort数组中包含4个项目,我想将这四个值组合成ulong值,如
(插图)
UInt64 param64BitValue= (UInt64)command.Data[0] << 64 | command.Data[1] << 64 | command.Data[2] << 64 | command.Data[3];
大或小端格式。我该如何实现这一目标?
答案 0 :(得分:2)
如果command.Data
确实是ushort[]
数组,那么您的第一个代码段实际上应该移位16位,而不是32位。
uint bigEndian32 = ((uint)command.Data[0] << 16) | command.Data[1];
对于64位,你只需每次向左移16位:
ulong bigEndian64 = ((ulong)command.Data[0] << 48) | (command.Data[1] << 32) | (command.Data[2] << 16) | command.Data[3];