我正在尝试针对我的规范执行以下操作:
具有字节数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#代码是正确的 - 问题是输入参数的值是错误的