【发布时间】:2019-02-23 09:10:29
【问题描述】:
我正在尝试针对我的规范执行以下操作:
字节数为 N 的销售计数器从 BIG 中的字节 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;
}
BitConverter 的属性IsLittleEndian 为假。所以这应该是对的,或者?
但是使用外部工具的测试说
“计算的销售计数器与加密的销售计数器不匹配(参见 DECRYPTED_TURNOVER_VALUE 参数),请检查销售计数器编码(BIG endian,二进制补码)或使用的 AES 密钥。”
如果我的代码进行二进制补码表示,我不知道什么?
我不是字节专家,所以有人知道我可以尝试什么
【问题讨论】:
标签: c# byte endianness bitconverter