2017-02-14 207 views
0

由于我的系统的限制,我收到一个字符串格式的字符数组的JSON对象。它仅用于测试某些东西。将字节格式字符串转换为字节数组android

我得到了问题的字符串“[1,2,3,4]”,例如在android中,并想要转换它,所以我最终得到byte [] data = [1,2,3,4]。

使用getBytes显然不会返回我正在寻找的东西,而且我对这里可以做些什么还是有点无知。帮助将不胜感激!

编辑:我只是分析字符串来获取ints数组中的每个整数。有没有一种方法可以轻松地将它放入字节数组中?

感谢

+0

**我接收中有一个字节数组** JSON对象,请在代码中指定的JSON格式的结构,因为我们在这里说android,希望你熟悉android中的org.json包,它有助于Json解析?更详细的说明会为你带来更好,更清洁的答案 – ShayHaned

+0

你好,JSON部分并不是我真正遇到的问题。除非你知道JSON发送字节数组的方式。我的问题实际上只是将具有像[1,2,3,4]这样的字节数组格式的字符串转换为实际的字节数组[1,2,3,4] – lhbortho

+0

,换句话说,您的意思是你是否有这样的,{“strNotBytes”:[“1”,“2”,“3”,“4”]},你希望将其转换成byte []数组或任何字节输出流,如果我没有错? – ShayHaned

回答

2

试试这个:

private static byte[] doConvert(String inStr) { 
    String opStr = inStr.substring(1); 
    opStr = opStr.substring(0, opStr.length()-1); 
    int val; 
    String[] arr = opStr.split("[,]"); 
    byte[] retVal = new byte[arr.length]; 
    for (int i=0; i<arr.length; i++) { 
     opStr = arr[i].trim(); 
     try { 
      val = Integer.parseInt(opStr); 
     } catch (Exception e) { 
      System.out.println("bad input at item #"+i+": "+opStr); 
      return null; 
     } 
     if (val > 255) { 
      System.out.println("bad input value at item #"+i+": "+val+" > 255"); 
      return null;     
     } 
     retVal[i] = (byte) val; 
    } 
    return retVal; 
} 
+0

你好,这绝对让我更接近我需要的东西。我已经做了类似的事情,但使用Integer.valueOf()而不是parseInt将字符串转换为整数。也许这是造成问题。现在我遇到的一个问题是,如果我将字符串[2,182,28,82,251,154,70,149]转换为字节后得到[2,-74,28,82,-5,-102, 70,-107]。我猜这与签名和无符号字节有关。有没有办法改变这个?非常感谢迄今为止的帮助! – lhbortho

+0

实际上没关系,因为我只需要这些位在正确的值以后再转换它们,我不在乎它是否将它们用作签名或未签名,所以感谢您的帮助! – lhbortho

相关问题