Я пытаюсь сделать следующее относительно моей спецификации:
Счетчик продаж с количеством байтов N начинается с байта 0 в формате BIG 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),проверьте код счетчика продаж (БОЛЬШОЙ порядковый номер, два дополнения) или используемый ключ AES. "
Что я не знаю, если мой код представляет собой дополнение к двум?
IЯ не специалист с байтами, поэтому кто-то есть идея, что я могу попробовать