Stream Binary File (чтение Файла)

KingGLEB

Active member
08.05.2008
30
0
#1
Добрый день.

Задача следующая: есть файл, в нем 7 байт. Надо с помощью ssjs разобрать эти байты и преобразовать каждый из них в шестнадцатеричные или десятичные.

Файл находится на сервере ('C:\a.bin'):
D3 02 40 8D C9 16 00

Вот что у меня получилось:
var stream:NotesStream = session.createStream();
stream.open("C:\a.bin");
var logRec:Array = stream.read(7); // Считываем 7 байт
print(logRec); // Результат: -45,2,64,-115,-55,22,0

Вопрос: а почему числа отрицательные? Почему первый байт это -45, а не 211 (D3), например? Как мне из -45 получить нормальное десятичное 211? Поясните плиз. Спасибо.

PS: чувствую, что с возрастом начинаю тупеть. :RTFM:
 

KingGLEB

Active member
08.05.2008
30
0
#2
Вопрос снимается. Нашел ответ.

var stream:NotesStream = session.createStream();
stream.open("C:\a.bin");
var logRec:Array = stream.read(7); // Считываем 7 байт
print(logRec); // Результат: -45,2,64,-115,-55,22,0

print(("0x" + (0xFFFFFFFF + logRec[0] + 1).toString(16).toUpperCase()).right(2)); // Результат: D3
print(("0x" + (0xFFFFFFFF + logRec[1] + 1).toString(16).toUpperCase()).right(2)); // Результат: 02
print(("0x" + (0xFFFFFFFF + logRec[2] + 1).toString(16).toUpperCase()).right(2)); // Результат: 40
print(("0x" + (0xFFFFFFFF + logRec[3] + 1).toString(16).toUpperCase()).right(2)); // Результат: 8D
print(("0x" + (0xFFFFFFFF + logRec[4] + 1).toString(16).toUpperCase()).right(2)); // Результат: C9
print(("0x" + (0xFFFFFFFF + logRec[5] + 1).toString(16).toUpperCase()).right(2)); // Результат: 16
print(("0x" + (0xFFFFFFFF + logRec[6] + 1).toString(16).toUpperCase()).right(2)); // Результат: 00