【问题标题】:Convert a String of bytes into ASCII将字节字符串转换为 ASCII
【发布时间】:2011-10-17 20:13:07
【问题描述】:

我正在连接一个蓝牙设备,该设备响应我发送的一些参数,但作为响应,我从这样的套接字读取:

String data = dIn.readLine();

其中 dIn 是:

DataInputStream dIn = new DataInputStream(socket.getInputStream());

问题是我收到了数据,但它是在字符串上读取的字节数组。如何将包含我的字节数组的字符串转换为具有正确十六进制值的字符串?

提前谢谢你。

【问题讨论】:

  • 您能否举例说明您收到的数据,以及您认为它应该看起来如何?

标签: java android sockets byte


【解决方案1】:

目前尚不清楚您是在尝试实际上解码作为字节数组获得的文本字符串,还是想要任意二​​进制数据的文本表示(十六进制)。首先你会使用:

String text = new String(data, 0, data.length, "ASCII");

第二个你可以使用Apache Commons Codec

String text = Hex.encodeHexString(data);

【讨论】:

  • 这或多或少是我需要的……但不完全是。
  • @Sonhja:问一个更具体的问题,得到一个更具体的答案:)
【解决方案2】:

看看 String 的Format function。如果您将format 指定为“%X”,它将作为十六进制字符串返回

您必须遍历字节数组来转换每一个,因为上面的函数只接受原始数字类型。

【讨论】:

  • %X 用于大写字母字符或 %x 用于小写字母字符。
【解决方案3】:

DataInputStream 包装在InputStreamReader 中。

DataInputStream.readLine() 已弃用。

【讨论】:

    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多