Преобразовать байтовый массив, представленный для типизированного значения столбца sql_variant, в long/int64

У меня есть значение байтового массива из 10 элементов, взятых из sql_variant столбец в моей таблице базы данных и хотел бы преобразовать его в длинное значение. Я попробовал это.

 byte []a = new byte[10]{ 127, 1, 0, 202, 154, 59, 0, 0, 0, 0 };
 long i = BitConverter.ToInt64(a, 0);
 Console.WriteLine("{0}", i);

но это не дает мне правильный результат. Я ожидаю, что это будет 10000000000,

Спасибо, если вы могли бы предложить мне некоторые идеи классов или методов в C#, я могу посмотреть на.

1 ответ

10000000000 в шестнадцатеричной записи - 02540BE400.

Массив байтов для этого значения в обратном порядке:

byte[] a = new byte[10] { 0x00, 0xE4, 0x0B, 0x54, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00};

или в десятичной записи:

byte[] a = new byte[10] { 0, 228, 11, 84, 2, 0, 0, 0, 0, 0 };

Для этого массива ваша функция возвращает ожидаемый результат: 10000000000.

Другие вопросы по тегам