Сложность покрытия неподписанных int16 и неподписанных int32 в JavaScript - PullRequest
0 голосов
/ 21 июля 2011

Я работаю с API, который отправляет данные в виде последовательности строк base64, которые я преобразую в массив байтов.Я был в состоянии разобрать значения времени, отправленные в данных (год, день, час и т. Д. API перечисляет их тип данных как unsigned char).Я использую parseInt (..., 2) в javascript.

Трудность, с которой я сталкиваюсь, заключается в преобразовании подписанных int32 и unsigned int16 в их десятичные значения.Например, это битовые строки для напряжения и мощности:

Напряжение (без знака int16) 01101010 00001001 - Должно быть около 120,0 Мощность (со знаком int32) 10101010 00010110 00000000 00000000 - Должно быть 0-10 кВтч

Кто-нибудь знает, как я могу преобразовать эти значения?Кроме того, я написал простую функцию для преобразования base64 в массив байтов, который, я уверен, является правильным, но приведенные выше значения не имеют никакого смысла, возможно, это не так.Если это так, кто-нибудь знает плагин, который преобразует base64 в двоичный файл.

Спасибо, Тристан

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

Я не вижу, как 0110101000001001 преобразуется в 120 ... Это либо 27415, либо 2410 в зависимости от порядка байтов

0 голосов
/ 21 июля 2011

Ваше напряжение как целое число без знака равно 27145, это то, что вы получаете от конверсии, потому что это правильное значение. Ваша сила -1441398784 как подписанный int.

...