C#BIG Endian格式为长值

问题描述 投票:1回答:1

我正在尝试针对我的规范执行以下操作:

具有字节数N的销售计数器以BIG ENDIAN格式的字节0开始,存储为二进制补码表示(“signed”)。 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 endian,二进制补码)或使用的AES密钥。”

我不知道我的代码是否有两个补码表示?

我不是字节的专家所以有人知道我可以尝试什么

c# byte endianness bitconverter
1个回答
0
投票

所以问题解决了 - 对于大端的c#代码是正确的 - 问题是输入参数的值是错误的

© www.soinside.com 2019 - 2024. All rights reserved.