长值的C#BIG Endian格式

时间:2019-02-23 09:10:30

标签: c# byte endianness bitconverter

关于我的规范,我正在尝试执行以下操作:

BIG中字节数为N的销售计数器从字节0开始 ENDIAN格式存储为二进制补码表示形式(“符号”)。 N对应 编码销售计数器所需的字节数。必须 收入计数器至少使用5个字节/ 40位。

为此,我在C#中创建了以下代码

private static byte[] EncodeUmsatz(long umsatz)
{
    // This gives an 8-byte array
    byte[] umsatzBytes = BitConverter.GetBytes(umsatz);
    // Pad with zeroes to get 16 bytes
    int length = 16 * ((umsatzBytes.Length + 15) / 16);
    Array.Resize(ref umsatzBytes, length);
    // reverse to get big-endian array
    Array.Reverse(umsatzBytes, 0, umsatzBytes.Length);
    return umsatzBytes;
}

IsLittleEndian的属性BitConverter为假。所以这应该是正确的,还是?

但是使用外部工具进行测试

  

“计算出的销售柜台与加密的销售柜台不匹配(请参见DECRYPTED_TURNOVER_VALUE参数),请检查销售柜台编码(BIG字节序,二进制补码)或使用的AES密钥。”

我不知道我的代码是否用二进制补码表示?

我不是字节专家,所以有人知道我可以尝试的方法

1 个答案:

答案 0 :(得分:0)

因此问题得以解决-C#代码对于大字节序是正确的-问题是输入参数的值错误