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);