テスト機器から受信バイト配列があります。バイト配列の長さは、2 バイトまたは 4 バイトのいずれかです。これらのバイト配列を unsigned long に変換する次のコードを書きました。
private ulong GetUlongFrom2Bytes(byte MSB, byte LSB)
{
return (ulong)((MSB << 8) + (LSB));
}
private ulong GetUlongFrom4Bytes(byte MSB, byte msb, byte lsb, byte LSB)
{
return (ulong)((MSB << 24) + (msb << 16) + (lsb << 8) + (LSB));
}
逆に、反対方向に進むには、次のコードを実行します。
private byte[] Get4Bytes(ulong parm1)
{
byte[] retVal = new byte[4];
retVal[0] = (byte)((parm1 >> 24) & 0xFF);
retVal[1] = (byte)((parm1 >> 16) & 0xFF);
retVal[2] = (byte)((parm1 >> 8) & 0xFF);
retVal[3] = (byte)(parm1 & 0xFF);
return retVal;
}
private byte[] Get8Bytes(ulong parm1, ulong parm2)
{
byte[] retVal = new byte[8];
Array.Copy(Get4Bytes(parm1), 0, retVal, 0, 4);
Array.Copy(Get4Bytes(parm2), 0, retVal, 4, 4);
return retVal;
}
この機器を制御するためのコードをデバッグしようとしていますが、このコードが私がやろうとしていることに対して正しく書かれていることを確認するために、SO で皆さんからサニティ チェックをお願いします。