作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在进行 NFC 实验,需要写入 MIFARE Classic 标签,但它给了我一个异常,因为它需要 16 个字节。这听起来有点菜鸟,但我已经尝试了一切,但它仍然给了我同样的异常(exception):
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")));
最佳答案
如果你打印出这个字节数组的长度,它会返回 32。这意味着你选择的编码每个字符使用的字节数比你想要的要多。
您可以尝试将其与 UTF8 一起使用,这至少会为您提供所需的字节数,但要注意您尝试发送的字符。 See the link for an explanation on this.
"CAR 100000000000".getBytes(Charset.forName("UTF8"))
关于java - 如何从 Java 中的字符串中精确获取 16 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30275695/
我是一名优秀的程序员,十分优秀!