/ / Comment convertir des octets [] en codes barres dans ZXing - zxing

Comment convertir les octets [] en code à barres dans ZXing - zxing

ZXing.Result obtenu à partir de ZXing.BarcodeReader fournit une propriété de RawBytes de byte[]. Cependant, j'ai essayé, mais j'ai été incapable de trouver une fonction dans ZXing.BarcodeWriter qui accepte byte[] comme argument.

Je veux avoir un code barre de ZXing.BarcodeWriter qui est exactement la même que celle ZXing.BarcodeReader lit.

Par exemple, un code à barres est appelé code 128,

BarcodeReader donne RawBytes commence par 3 octets, 105, 102, 42,

ce qui signifie [code de départ C], [FNC 1], [42] dans le code 128,

ce qui signifie que le code à barres commence par 2 chiffres 4, 2.

La principale raison de trouver une telle fonction est que les métadonnées sont perdues si un code à barres est converti en string et reconverti.

string ne représente que 4 et 2, et [Code de démarrage C] et [FNC 1] sont perdus.

Y a-t-il une fonction pour cela? Vous pouvez supposer que le format de code à barres est connu.

J'utilise ZXing.NET, mais je suppose que les fonctions sont similaires sur différentes plates-formes.

Réponses:

0 pour la réponse № 1

Il dépend du type de code à barres, si un encodageméthode avec un paramètre tableau d'octets est disponible. Pour le code-barres aztèque, vous pouvez utiliser la classe com.google.zxing.aztec.encoder.Encoder qui fournit la méthode:

public static AztecCode encode(byte[] data)

La classe Encoder du code QR ne fournit par exemple pas de méthode d'encodage avec un octet [].


0 pour la réponse № 2

Non, il n'y a pas BarcodeWriter qui accepte un tableau d'octets. Mais vous pouvez définir une option qui interprète la symbologie GS1.

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

Le lecteur de code à barres convertit maintenant le FNC1mot de passe à une représentation sous forme de chaîne dans le résultat, dans votre cas "] C142". La représentation FNC1 "] C1" n'est pas très intuitive mais elle est définie dans la spécification GS1 pour le code 128 5.4.6.4. Chaque mot de code FNC1 suivant est converti en caractère séparateur de groupe (GS / 0x1D / (char) 29).

Le rédacteur de code à barres d'autre part n'utilise quele caractère séparateur de groupe. Cela signifie que si vous voulez générer le même code à barres à partir de la chaîne de résultat, vous devez remplacer le premier "] C1 par" (char) 29 ".