0

好奇如何将我的 NdefRecord 中的有效负载从它进入的字符串转换为可以在我的应用程序的其余部分中使用的整数。parseint 和 valueof 方法导致我的应用程序崩溃。不知何故设法将故障缩小到一行代码:

int newtimer = Integer.valueOf(newtimermsg);

此行导致我的应用程序崩溃,Newtimermsg 是从收到的 NdefRecord 的有效负载中提取的字符串,如下面的代码所示:

String newtimermsg = new String(msg.getRecords()[0].getPayload());

这有效,因为我已经通过 newtimermsg 上使用的 settext 检查了应用程序,它完美地显示了接收到的消息,但我想知道如何将其转换为整数。不知道如何做到这一点听起来非常基本和愚蠢,但任何帮助将不胜感激。

4

1 回答 1

1

这取决于您最初如何将整数值存储在 NDEF 记录的有效负载中。

  1. 转换为/从整数的文本表示

    将整数转换为记录有效负载:

    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);
    
  2. 整数和字节数组之间的直接转换(在存储方面更高效)

    将整数转换为记录有效负载:

    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();
    
于 2014-04-13T08:06:25.730 回答