帮助将String字节数组转换为实际字节

时间:2011-07-13 01:08:21

标签: java type-conversion

我有一个如下所示的字符串:[“1011000”,“1000010”,“1001101”,“1000011”]。

我的论点来自其他地方所以它需要这样。

我需要将其转换为真正的字节数组。

这是我的方法:

public void send(String[] payloadarr)  throws IOException { 
    byte [] payload = {};

    for (int i = 0; i < payloadarr.length; i++) {
        byte x = (byte) payloadarr[i];
        payload[i] = x;
    }
    //do byte stuff with payload
}
但是,它不起作用。抱怨无法转换的类型字符串到字节。

任何人都可以帮我解决这个类型转换吗?

3 个答案:

答案 0 :(得分:7)

已编辑:感谢@Gabe将Integer.parseInt更改为Byte.parseByte

您可以使用Byte.parseByte(String s, int radix) - 您的基数为2(即基数为2)

这是一个将String数组转换为byte[]的方便的方法:

public static byte[] stringsToBytes(String[] payloadarr) {
    byte[] payload = new byte[payloadarr.length];
    for (int i = 0; i < payloadarr.length; i++) {
        payload[i] = Byte.parseByte(payloadarr[i], 2);
    }
    return payload;
}

public static void main(String[] args) {
    System.out.println(Arrays.toString(stringsToBytes(new String[] { "1011000", "1000010", "1001101", "1000011" })));
}

输出:

[88, 66, 77, 67]

答案 1 :(得分:3)

很难从你的问题中看出来,但听起来你真的想要

byte x = Byte.parseByte(payloadarr[i], 2);

答案 2 :(得分:2)

你不能使用(只是)类型转换来做到这一点。

您需要使用Integer.parseInt(String, int)int的{​​{1}}。这会为您提供int,您需要投放到byte

public void send(String[] payloadarr)  throws IOException { 
    byte [] payload = new byte[payloadarr.length];

    for (int i = 0; i < payloadarr.length; i++) {
        payload[i] = (byte) Integer.parseInt(payloadarr[i], 2);
    }
    //do byte stuff with payload
}

备注

  • 如果NumberFormatException的任何组件不是二进制字符串,则上述方法将抛出payloadarr

  • 我修复了payload ...

  • 的初始化