3

印刷されたqrコードを使用して、実際のオブジェクトをデータベースレコードで識別するアプリケーションがあります。

データベースは GUID を主キーとして使用します (これは時々接続されるシステムであるため、交渉の余地はありません)。

qr コードをできるだけ小さくするために、32 文字の 16 進数 GUID を、英数字の qr コードで使用できる 36 文字のアルファベット (0 ~ 9 および AZ) を利用する短い文字列に変換しようとしています。

基数変換全体が頭を悩ませているので、どんな助けも大歓迎です。

4

4 に答える 4

2

GUID をバイト配列として格納し、それをBase32に変換できます。

この関連する質問も参照してください。

于 2011-01-18T11:49:39.287 に答える
1

Base32 よりも約 20% 小さい Base64 に変換します。base64 に変換するためのライブラリまたはサンプル コードは、すぐに入手できます。base64 の唯一の問題は、文字 'a' と 'A' が base64 によって異なることは明らかですが、必ずしも DB によって異なるということです。そのため、Base32 ではなく Base64 を選択した場合は、DB テーブルの照合順序が正しいことを確認する必要があります。正しくセットアップします。

于 2011-01-18T12:02:51.913 に答える
0

グローバル一意識別子 (GUID) の値は、32 文字の 16 進数文字列として表すことができますが、通常は 128 ビット (16 バイト) の整数として格納されます。

このような 128 ビット値を格納できる最小の QR コードは、「バイナリ/バイト エンコーディング」(任意の 8 ビット バイトを格納できる) を指定し、16 バイトを直接格納することだと思います。これは、ビットあたり 1 ピクセル、バイトあたり 8 ピクセル (および標準のオーバーヘッド ビット) でエンコードします。他のすべての有効な QR エンコーディングは、ビットあたり少なくとも1 ピクセルを使用し、同じ標準オーバーヘッドを持つと確信しています。そのため、Base64、Base45、Base36、Base32 のいずれの変換でも、より小さな QR コードを取得することはできません。

URL をエンコードする QR コードのほとんどは、小文字をサポートするために同じ「バイナリ/バイト エンコード」を使用します。「英数字エンコーディング」を使用する QR コードは、私の経験ではあまり一般的ではありません。URL をエンコードするために使用すると、すべて大文字の URL にデコードされます (45 個の記号 0 ~ 9、A ~ Z [大文字のみ] しか保存できないため)。 ]、スペース、$、%、*、+、-、.、/、:)。「2 文字あたり 11 ビット」は多くの状況で非常に巧妙ですが、GUID をエンコードするときにはあまり役に立ちません。

http://www.younoodle.com/startups/barcode_guidまたはWikipedia:spimeを見たことがありますか?

于 2012-04-27T00:16:12.613 に答える