【问题标题】:Android: Converting NDEF record payload from bytes to intAndroid:将 NDEF 记录有效负载从字节转换为整数
【发布时间】:2014-04-13 05:07:00
【问题描述】:

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

int newtimer = Integer.valueOf(newtimermsg);

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

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

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

【问题讨论】:

    标签: java android nfc ndef nfc-p2p


    【解决方案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();
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多