如何从 Java 中的 QR 码解码字节?
How does one decode bytes from QR code in Java?
假设我有这个示例节点缓冲区 Buffer.from([1,2,3])
,我已将其编码为 qrcode
npm 包文档指定的 QR 码。
const buffer = Buffer.from([1, 2, 3]);
QRCode.toFile(`public/images/${product.name}.png`, [{ data: buffer, mode: 'byte' }], {
color: { light: '#0000' },
}, (err) => { if (err) throw err; });)
这是输出:
现在我必须在我的 Android 应用程序中恢复那些编码字节。我目前正在使用 Zxing,输出如下所示。不幸的是,在开头和结尾添加了一堆格式化字节 (ec 11 ec 11...)。
更复杂的示例会产生相同的结果。对于缓冲区 16 76 20 42 3f 5d 4d d5 82 9a 45 19 32 90 19 53 00 00 00 02 00 00 00 63 0e 46 72 6f 7a 65 6e 20 4c 61 73 61 67 6e 65
,这里是 Zxing 解码:
开头的 427
值是什么,我该如何去掉它?因为否则数据看起来不错。我将如何取回我的 ByteBuffer?
谢谢!
在花了太多时间后我羞于透露,我找到了解决它的方法。
解决方案是将缓冲区编码为 Base64。
const buffer = Buffer.from([1, 2, 3]);
QRCode.toFile(`public/images/${product.name}.png`, buffer.toString('base64'), {
color: { light: '#0000' },
}, (err) => { if (err) throw err; });)
然后在 Java 处解码。
byte[] res = Base64.getDecoder().decode(rawResult.getText());
生成的字节不再包含格式,否则它们将通过以前的方法进行格式化。
假设我有这个示例节点缓冲区 Buffer.from([1,2,3])
,我已将其编码为 qrcode
npm 包文档指定的 QR 码。
const buffer = Buffer.from([1, 2, 3]);
QRCode.toFile(`public/images/${product.name}.png`, [{ data: buffer, mode: 'byte' }], {
color: { light: '#0000' },
}, (err) => { if (err) throw err; });)
这是输出:
现在我必须在我的 Android 应用程序中恢复那些编码字节。我目前正在使用 Zxing,输出如下所示。不幸的是,在开头和结尾添加了一堆格式化字节 (ec 11 ec 11...)。
更复杂的示例会产生相同的结果。对于缓冲区 16 76 20 42 3f 5d 4d d5 82 9a 45 19 32 90 19 53 00 00 00 02 00 00 00 63 0e 46 72 6f 7a 65 6e 20 4c 61 73 61 67 6e 65
,这里是 Zxing 解码:
开头的 427
值是什么,我该如何去掉它?因为否则数据看起来不错。我将如何取回我的 ByteBuffer?
谢谢!
在花了太多时间后我羞于透露,我找到了解决它的方法。
解决方案是将缓冲区编码为 Base64。
const buffer = Buffer.from([1, 2, 3]);
QRCode.toFile(`public/images/${product.name}.png`, buffer.toString('base64'), {
color: { light: '#0000' },
}, (err) => { if (err) throw err; });)
然后在 Java 处解码。
byte[] res = Base64.getDecoder().decode(rawResult.getText());
生成的字节不再包含格式,否则它们将通过以前的方法进行格式化。