ZXing.Result
获取的 ZXing.BarcodeReader
提供了RawBytes
byte[]
的属性。但是,我已经尝试但无法在ZXing.BarcodeWriter
中找到接受byte[]
作为其参数的函数。
我想要ZXing.BarcodeWriter
的条形码与ZXing.BarcodeReader
读取的条形码完全相同。
说,条形码称为Code 128,
BarcodeReader
为RawBytes
开头提供3个字节,105
,102
,42
,表示Code 128中的[Start Code C],[FNC 1],[42],
表示条形码以2位
4
,2
开头。
找到这样一个函数的主要原因是,如果条形码转换为string
并转换回来,元数据就会丢失。
string
仅代表4
和2
,[启动代码C]和[FNC 1]丢失。
有功能吗?您可以假设条形码格式已知。
我使用的是ZXing.NET,但我认为不同平台的功能相似。
答案 0 :(得分:0)
如果具有字节数组参数的编码方法可用,则它依赖于条形码类型。对于Aztec-Barcode,您可以使用com.google.zxing.aztec.encoder.Encoder类提供方法:
public static AztecCode encode(byte[] data)
QR码的编码器类例如没有提供带字节[]的编码方法。
答案 1 :(得分:0)
不,没有BarcodeWriter接受字节数组。 但您可以设置一个解释GS1符号系统的选项。
var reader = new BarcodeReader { Options = new DecodingOptions { AssumeGS1 = true } };
条形码阅读器现在将FNC1代码字转换为结果中的字符串表示形式,在您的情况下"] C142"。 FNC1表示"] C1"并非直观,但它在Code 128 5.4.6.4的GS1规范中定义。每个后续的FNC1代码字都被转换为组分隔符(GS / 0x1D /(char)29)。
另一方面,条形码编写器仅使用组分隔符。 这意味着如果您想从结果字符串生成相同的条形码,则必须替换前导"] C1"与"(char)29"。