Java/Android-如何将int数组转换为最小字节数组?
我需要像这样转换一个int数组Java/Android-如何将int数组转换为最小字节数组?,java,android,arrays,type-conversion,nfc,Java,Android,Arrays,Type Conversion,Nfc,我需要像这样转换一个int数组 int[] myInts = { 99999, 9999, 99999, 1, 1234567890, 24385933, 99 }; …尽可能高效地存储到字节[]中,以便将其保存在NFC标记上 我已经从中看到,我尝试了这两个答案(和),但它们创建的字节数组的长度都是28 不幸的是,这对我没有好处,因为我需要创建一个最大长度为16的字节[](因为必须保存此数据的标签是MIFARE Ultralight EV
int[] myInts = {
99999,
9999,
99999,
1,
1234567890,
24385933,
99
};
…尽可能高效地存储到字节[]
中,以便将其保存在NFC标记上
我已经从中看到,我尝试了这两个答案(和),但它们创建的字节数组的长度都是28
不幸的是,这对我没有好处,因为我需要创建一个最大长度为16的字节[](因为必须保存此数据的标签是MIFARE Ultralight EV1)
为了将
myInts
转换为字节[16]
,我是否可以尝试其他方法?抱歉。我在我的问题中得到了一些错误的信息,因为根据,标签可以容纳48字节的用户数据-这是个好消息。(NXP的示例应用程序硬编码为只使用16字节,这让我有点误入歧途。)
无论如何,感谢您的宝贵意见。:-) 每个整数是4个字节。7 x 4=28,唯一的方法是如果您知道其中的一些值是,那么您对数组的值有任何已知的约束吗?例如,如果您知道数组中的某些元素在-128到127范围内,则可以将它们存储在单个字节中,而不是存储在4个字节中。从数学上讲,您甚至希望这样做的唯一方法是,您可以证明需要压缩的数组的可能性小于2^(8*16)=2^128。如果这是不可能的,那么你就100%走运了,不管你有多聪明,你都不可能做那么多的压缩。如果你写一系列的代码,你可以得到19个字节。但是它也可以大于7x4字节。一个简单的int翻译使用,因为这种类型的编码对于接近0的正数来说很小,但在最坏的情况下,每个int需要5字节。如果有人想提交原始问题的正确答案,我将把这个问题保留为未解决。