很好奇如何将 NdefRecord 中的有效负载从它所进入的字符串转换为可在我的应用程序的其余部分中使用的整数。 parseint 和 valueof 方法导致我的应用程序崩溃。不知何故设法将故障范围缩小到一行代码:
int newtimer = Integer.valueOf(newtimermsg);
此行导致我的应用程序崩溃,Newtimermsg 是从接收到的 NdefRecord 的有效负载中提取的字符串,如下面的代码所示:
String newtimermsg = new String(msg.getRecords()[0].getPayload());
这有效,因为我已经通过 newtimermsg 上使用的 settext 检查了应用程序,它完美地显示了收到的消息,但我想知道如何将其转换为整数。听起来非常基本和愚蠢,不知道如何做到这一点,但任何帮助将不胜感激。
最佳答案
这取决于您最初如何将整数值存储在 NDEF 记录的有效负载中。
与整数的文本表示形式相互转换
转换整数以记录负载:
int myInteger = ...; String payloadString = Integer.toString(myInteger); byte[] payload = payloadString.getBytes("US-ASCII");
将记录负载转换为整数:
byte[] payload = ...; String payloadString = new String(payload, "US-ASCII"); int myInteger = Integer.parseInt(payloadString);
整数与字节数组直接转换(存储效率更高)
转换整数以记录负载:
int myInteger = ...; ByteBuffer buffer = ByteBuffer.allocate(4); buffer.putInt(myInteger); byte[] payload = buffer.array();
将记录负载转换为整数:
byte[] payload = ...; ByteBuffer buffer = ByteBuffer.wrap(payload); int myInteger = buffer.getInt();
关于java - Android:将 NDEF 记录有效负载从字节转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23039330/