如何从Java中的String获取16个字节

时间:2015-05-16 12:29:06

标签: java string character-encoding nfc mifare

我正在使用NFC进行实验,我需要写入MIFARE Classic标签,但它给我一个例外,因为它需要16个字节。这听起来有点像诺贝尔,但我已经尝试了所有的东西,但它仍然给了我同样的例外:

 Caused by: java.lang.IllegalArgumentException: must write 16-bytes
        at android.nfc.tech.MifareClassic.writeBlock(MifareClassic.java:446)
        at com.kaissersoft.cartracker.MainActivity$1$1.doInBackground(MainActivity.java:80)
        at com.kaissersoft.cartracker.MainActivity$1$1.doInBackground(MainActivity.java:72)
        at android.os.AsyncTask$2.call(AsyncTask.java:297)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)

我使用的代码之一:

 mifare.connect();
 //DO STUFF
 mifare.writeBlock(4, "CAR 100000000000".getBytes(Charset.forName("UTF-16LE")));

1 个答案:

答案 0 :(得分:1)

如果你打印出这个字节数组的长度,它会返回32.这意味着你选择的编码每个字符使用的字节数比你想要的多。

你可以尝试将它与UTF8一起使用,它至少可以提供所需的字节数,但要注意你尝试发送的字符。 See the link for an explanation on this.

"CAR 100000000000".getBytes(Charset.forName("UTF8"))