2016-05-24 9 views
0

私は効率的にそれがNFCタグに保存することができbyte[]にできるだけ...Java/Android - int配列を最小バイト配列に変換するには?

int[] myInts = { 
    99999, 
    9999, 
    99999, 
    1, 
    1234567890, 
    24385933, 
    99 
}; 

...このようなint配列に変換する必要があります。

私は2つの答え( herehere)を試してみました、そこから this very similar questionを見てきました

、彼らは両方の作成バイト配列が、残念ながら28

の長さを持っているが、それは、私として私のためには良いません最大長が16のバイト[]を作成する必要があります(このデータを保存するタグはMIFARE Ultralight EV1です)。

myIntsbyte[16]に変換するための他の方法はありますか?

+0

各整数は4バイトです。 7 x 4 = 28、唯一の方法は、それらの値の一部が<= 255で、その値に1バイトを使用できることがわかっている場合です。 – cyroxis

+0

配列の値には既知の制約がありますか?たとえば、配列の要素の一部が-128〜127の範囲内にあることがわかっている場合、それらを4バイトではなく1バイトに格納できます。 – Eran

+1

数学的にもこれを行うことができる唯一の方法は、圧縮する必要のある配列に対して2 ^(8 * 16)= 2^128より小さい可能性があることを証明できる場合です。それが不可能であれば、あなたは100%幸運です。あなたがどれほど賢いものであっても、それほど多くの圧縮を行うことはできません。 –

答えて

-1

お詫び申し上げます。私はMIFARE Ultralight EV1 datasheetによると、私の質問に間違った情報があります。タグは48バイトののユーザーデータを保持できます。これは良いニュースです。 (私はちょうど16バイトを使用するためにハードコードされているNXPのサンプルアプリケーションによって少し誤解されていた)。

とにかく参考にしていただきありがとうございます。 :-)

+0

誰かが元の質問に適切な回答を提出したい場合は、未解決のままにしておきます。 –

+0

なぜdownvote? (同じ古い質問...) –

関連する問題