我正在尝试开发一个应用程序,它将使用票证给用户验证它们的能力.我想知道为什么我应该选择Aztec条形码,因为许多公司已经选择了而不是QR码.Aztec条形码的优点是什么?
到目前为止,我发现的良好比较是:http: //www.tec-it.com/en/support/knowbase/barcode-overview/2d-barcodes/Default.aspx
在这里:http:http://en.wikipedia.org/wiki/Aztec_Code on Usage部分你可以看到它经常被使用.
我一直在研究iOS阅读器应用程序,用于德国铁路(德国铁路)使用的特殊条形码.它是Aztec条形码的变体,用于连接DSA签名字符串和zlib缩减的有效负载.
我被困住了,当我得知AVMetadataMachineReadableCodeObject没有公共方法来读取条形码中包含的原始字节时,字符串方法总是使zlib压缩数据乱码.
幸运的是,这个答案让我朝着正确的方向前进.可以使用KVO访问(私有)字节,因为我目前不希望在App Store上分发应用程序,这是完美的.
尽管我几乎不存在Swift和Objective-C知识,我设法让这个工作,你可以在示例代码中看到.但是条形码中存储的字节NSData与预期结果不符!我怀疑我使用的zlib库(DeflateSwift)无法正常工作,所以我构建了一个测试用例,工作正常.
我的问题是:我做错了什么?我是否需要进一步处理原始字节以获得预期结果(见下文)?如何生究竟是存储在字节AVMetadataMachineReadableCodeObject?谁能指出我正确的方向?任何帮助表示赞赏.
这是我的代码(这是一个悲伤的mashup Swift和Objective-C)
if let metadataObject = metadataObjects.first {
let readableObject = metadataObject as! AVMetadataMachineReadableCodeObject;
let rawReadableObject = readableObject.valueForKeyPath("_internal.basicDescriptor")!["BarcodeRawData"] as? NSData;
if let rawBytes = rawReadableObject {
let barcodeData = rawBytes; // or use testData instead
let barcodeSplit:Int = 68;
let barcodeLength:Int = barcodeData.length;
let barcodeHeader:NSData = barcodeData.subdataWithRange(NSRange(location: 0, length: barcodeSplit))
let barcodeZlibContent:NSData = barcodeData.subdataWithRange(NSRange(location: barcodeSplit, …Run Code Online (Sandbox Code Playgroud) 我想在我的应用程序中嵌入一个Aztec Code阅读器.我需要控制GUI
我发现的是
这个问题有解决方案吗?也许som libs?专有的库?

我正在尝试解码目前德国铁路(德国铁路)发行的机票上使用的条形码格式的数据.我发现这个非常有用的网站(德语)已经做了类似的事情,并提供了一个python脚本.
该网站声明数据被压缩zlib,生成的blob用DSA签名,所有这些都存储在条形码(Aztec格式)中.
这种条形码的示例
我已经使用网站上提供的脚本成功解码了一张票.安装了python-pyasn1库.阅读条形码(根据说明使用BCTester,NeoReader应用程序遇到一些问题)并将结果转换为十六进制.将十六进制数据保存为纯文本文件(由于脚本所需的某些原因)并使用脚本解析文件.有效.
但剧本做得太多了.我想自己做解析,但我不能让zlib解压缩工作,我理解很少的代码来理解它.我几乎不知道Python.不过,我有一些编程经验.
如果您只是查看条形码中的数据,它看起来像这样:https: //gist.github.com/oelna/096787dc18596aaa4f5f
第一个问题是: 什么是DSA签名,我是否需要先从实际压缩数据中分离出来?
第二个: 一个简单的python脚本看起来像是从文件读取条形码blob并简单地解压缩它,所以我可以进一步解析格式.我有一些想法
#!/usr/bin python
import zlib
ticket = open('ticketdata.txt').read()
print zlib.decompress(ticket)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.任何暗示正确的方向将不胜感激.
如果保存到文件,以下是脚本可读的十六进制数据:
23 55 54 30 31 30 30 38 30 30 30 30 30 31 30 2c 02 14 1c 3d e9 2d cd 5e c4 c0 56 bd ae 61 3e 54 ad a1 b3 26 33 d2 02 14 40 75 03 d0 cf 9c …Run Code Online (Sandbox Code Playgroud) 我首先假设下面的图像是一个二维码,但仔细检查后,它似乎是别的东西(注意,例如,矩阵中间的校准方块)。
有人知道这样的点阵叫什么吗?是否有任何工具可用于解码它(Python 是理想的......)?
非常感谢!
barcode ×4
qr-code ×2
zlib ×2
android ×1
ios ×1
javascript ×1
objective-c ×1
parsing ×1
python ×1
swift ×1