У меня есть изображение BMP
, и мне нужно отправить его на устройство через TCP
/IP
. У нас уже есть библиотека C
в нашей компании, которая может справиться с этим, но мне нужно сделать это в JavaScript. К сожалению, у меня нет доступа к исходному коду библиотеки, ни к системе устройства.Javascript window.atob -> HEX - отличный результат, чем ожидалось
это Base64
строку образец изображения (черный & белой галочки):
Qk2 + AAAAAAAAAD4AAAAoAAAAIAAAACAAAAABAAEAAAAAAIAAAADEDgAAxA4AAAAAAAAAAAAAAAAAAP /// сод ////// + Н //// А ////Gh /// /// Wb 4AP // 8AD // + ААР // AAD // GAA // yAAH/5wAB/+ 8EAP/fjAB/394Af +++ AD/vPwAf8P + AH /// /// дА 9AH /// /// v5 7/Р /// /// FX 7 + Р // +/г /// 38f // +/п /// /// 38 +/ж /// v3/// 97 //// hw ==
Я использую window.atob
и кодирую его в HEX. Я использую этот JS функции:
function toHex(str) {
var result = '';
for (var i = 0; i < str.length; i++) {
result += str.charCodeAt(i).toString(16);
}
return result;
}
var str = window.atob(base64img);
var result = toHex(str);
Это дает мне этот результат, который почти ожидаемый результат:
424dbe00000003e0002800020000200001010000080000c4e00c4e00000000000000ffffff0ffffffffffe1ffffffc0ffffff807fffff07ffffe03ffffc03ffff801ffff00fffe00fffc807ff9c07ffbc103ff7e301ff7f781ffbef80ffbcfc07fc3fe07ffffe03fffff401fffffbf9fffffbfcfffffdfc7ffffefe3ffffeff3fffff7f1fffffbf9fffffdfcfffffefdfffffefdffffff7bffffff87
Библиотека посылает точное то же изображение правильно (устройство принимает сообщение). Вот как это выглядит (копируется из журнала):
be00424dbe000000000000003e000000280000002000000020000000010001000000000080000000c40e0000c40e0000000000000000000000000000ffffff00ffffffffffe1ffffffc0ffffff807fffff007ffffe003ffffc003ffff8001ffff0000fffe0000fffc80007ff9c0007ffbc10101003ff7e3001ff7f7801ffbef800ffbcfc007fc3fe007ffffe003fffff401fffffbf9fffffbfcfffffdfc7ffffefe3ffffeff3fffff7f1fffffbf9fffffdfcfffffefdfffffefdffffff7bffffff87
Так это то, что мне нужно, чтобы получить от Base64
в моей JavaScript. Возможно ли это? Или я чего-то не хватает?
Документация для библиотеки говорит, что изображение должно быть двоичными данными 2B (Little Endian). Я этого не понимаю. Должен ли я кодировать изображение любым другим способом?
Похож на проблему «endianness» – Pointy
_ «Библиотека говорит, что изображение должно быть двоичными данными 2B» _ что это за библиотека, называемая (ссылка)? Никогда не слышал о «двоичных данных 2B» _ до ... –