Я пытаюсь сделать следующее относительно моей спецификации:
Счетчик продаж с количеством байтов N начинается с байта 0 в формате BIG ENDIAN, хранящемся как представление с дополнением до двух ("со знаком"). N соответствует количеству байтов, необходимых для кодирования счетчика продаж. Должен быть не менее 5 байт / 40 бит для счетчика доходов.
и для этого я создал следующий код на С#
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».
Что я не знаю, делает ли мой код представление с дополнением до двух?
Я не специалист по байтам, так что у кого-нибудь есть идея, что я могу попробовать