/ /バイト[]をZXing-zxingのバーコードに戻す方法

バイト[]をZXing-zxingのバーコードに変換する方法

ZXing.Result から得られました ZXing.BarcodeReader の特性を提供する RawBytesbyte[]。しかし、私は試してみましたが、 ZXing.BarcodeWriter 受け入れる byte[] その議論として。

私はバーコードを持っていたい ZXing.BarcodeWriter それはまさにそれと同じです ZXing.BarcodeReader 読む。

バーコードはコード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を使用していますが、機能はさまざまなプラットフォーム間で似ていると思います。

回答:

回答№1は0

バーコードタイプに依存し、エンコードバイト配列パラメータを持つメソッドが使用できます。 Aztec-Barcodeの場合、メソッドを提供するcom.google.zxing.aztec.encoder.Encoderクラスを使用できます。

public static AztecCode encode(byte[] data)

例えば、QRコードのEncoderクラスは、バイト[]でエンコードメソッドを提供しません。


回答№2の場合は0

いいえ、バイト配列を受け入れるBarcodeWriterはありません。 しかし、GS1シンボルを解釈するオプションを設定することができます。

var reader = new BarcodeReader { Options = new DecodingOptions { AssumeGS1 = true } };

バーコードリーダーは、FNC1あなたのケースでは、結果の文字列表現へのコードワード "] C142" FNC1表現 "C1"は非常に直観的ではないが、コード128 5.4.6.4のGS1仕様で定義されている。以降のFNC1コードワードはすべてグループセパレータ文字(GS / 0x1D /(char)29)に変換される。

一方、バーコードライターは、グループ区切り文字。 つまり、結果の文字列から同じバーコードを生成する場合は、先頭の "] C1"を "(char)29"に置き換える必要があります。