使用 zbar 从二维码中提取二进制数据

Extracting binary data from QR-code with zbar

我正在尝试使用 zbar 从 QR 码中提取二进制数据(QR 码最初是使用传递 NSData 对象的 iOS SDK 编码的)。不幸的是,ZBarSymbol class 仅提供 NSString 成员中的内容。尝试使用 NSISOLatin1StringEncoding 从中提取 NSData 似乎可行,但在某些情况下仍然失败。

我在 zbar 实现中看到可以访问包含指向 char 的指针的 zbar_symbol_t 类型的对象。通过查看它,它似乎包含原始内容但带有某种附加数据,这是一个示例:

Original data: 9e7328c16bca3aaff532440917e4df6e155b96bd
Data in zbar_symbol_t: c29e7328c3816bc38a3ac2afc3b532440917c3a4c39f6e155bc296c2bd

任何人都知道 zbar_symbol_t 中的数据到底是什么,为什么它与我最初放置在 QR 码中的数据不同,以及如何提取我的原始数据(如果可能的话)从那?

我不确定这些字节代表什么,可能 zbar 试图将字节解释为 UTF-8 字符串,即使 QR 处于字节模式。

切换到 zxing 修复了所有问题,没有交错的意外字节,原始数据包含整个 QR 码,包括模式、终止符、填充等......而且它似乎永远不会失败,而 zbar 似乎有时会失败.