C++代码是:

unsigned short* ui=(unsigned short*)&buf[110];
            CountDev=ui[0];

buf是byte[],CountDev是unsigned int
(BCB6编译器x86)

我的尝试是:
F#
...CountDev  = System.BitConverter.ToInt32( [| arrayRead.[110]; arrayRead.[111] |] , 0 )

C#
...CountDev  = System.BitConverter.ToInt32( [arrayRead[110]; arrayRead[111]] , 0 )

但是严重的是我不确定。请检查我的尝试,并告诉我是否做错了。

最佳答案

我只想简单地将两个字节连接起来,然后将其放入一个int即可:

UInt32 CountDev = (UInt32)arrayRead[111] << 8 | (UInt32)arrayRead[110];

由于您只需要最低有效的两个字节,并且int的长度为4个字节(最高有效或符号位未触及),因此您也可以使用带符号的int:
int CountDev = (int)arrayRead[111] << 8 | (int)arrayRead[110];

编辑:

Henk Holtermans解决方案无疑是更好的选择,因为它利用了当前机器的优势:
UInt32 CountDev = (UInt32)System.BitConverter.ToUint16(arrayRead, 110);

10-08 20:02