私はBMP
イメージを持っていますので、TCP
/IP
でデバイスに送信する必要があります。私たちは既にC
ライブラリを持っていますが、それはこれを処理できますが、私はJavaScriptでそれを行う必要があります。残念ながら、私はライブラリのソースコードやデバイスシステムにアクセスすることはできません。Javascript window.atob - > HEX - 予想外の結果
これはサンプル画像(黒&白のチェックマーク)のBase64
列である:
Qk2 + AAAAAAAAAD4AAAAoAAAAIAAAACAAAAABAAEAAAAAAIAAAADEDgAAxA4AAAAAAAAAAAAAAAAAAP /// WD ////// + H //// A ////gH /// wB /// 4AP // 8AD // + AAf // AAD // gAA // yAAH/5wAB/+ 8EAP/fjAB/394Af +++ AD/vPwAf8P + AH ///gA/// 9AH /// v5 /// 7/P /// fx /// 7 + P // +/z /// 38f // +/n /// 38 /// +/f /// v3/// 97 //// hw ==
私はwindow.atob
を使用しており、それを16進数でエンコードしています。 、それは私にこの結果を与える
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);
ほとんど期待される結果:私は、この機能を使用JS
424dbe00000003e0002800020000200001010000080000c4e00c4e00000000000000ffffff0ffffffffffe1ffffffc0ffffff807fffff07ffffe03ffffc03ffff801ffff00fffe00fffc807ff9c07ffbc103ff7e301ff7f781ffbef80ffbcfc07fc3fe07ffffe03fffff401fffffbf9fffffbfcfffffdfc7ffffefe3ffffeff3fffff7f1fffffbf9fffffdfcfffffefdfffffefdffffff7bffffff87
ライブラリが正確を送信します同じイメージが正しく表示されます(デバイスはメッセージを受け入れます)。これは、(ログからコピーされた)のように、それがどのように見えるかです:
be00424dbe000000000000003e000000280000002000000020000000010001000000000080000000c40e0000c40e0000000000000000000000000000ffffff00ffffffffffe1ffffffc0ffffff807fffff007ffffe003ffffc003ffff8001ffff0000fffe0000fffc80007ff9c0007ffbc10101003ff7e3001ff7f7801ffbef800ffbcfc007fc3fe007ffffe003fffff401fffffbf9fffffbfcfffffdfc7ffffefe3ffffeff3fffff7f1fffffbf9fffffdfcfffffefdfffffefdffffff7bffffff87
だからこれは私が私のJavaScriptでBase64
から取得するために必要なものです。それも可能ですか?または私は何かを逃していますか?
ライブラリのドキュメントでは、イメージは2Bバイナリデータ(リトルエンディアン)でなければならないと記載されています。私はそれを理解していない。イメージを他の方法でエンコードする必要がありますか?
"endianness"問題のように見えます – Pointy
_ "ライブラリには2Bバイナリデータが必要です" _このライブラリは(リンク)とは何ですか?前に_ "2Bバイナリデータ" _を聞いたことはありません –