Jave(Android):以数字形式将byte []转换为String

时间:2015-06-18 14:32:37

标签: java android

我不熟悉Java语法,这个问题非常愚蠢。

我在C中的目标非常简单:

char a[3] = {1, 12, 115};

for{int i = 0; i< 3; i++}
    printf("%1d", (unsigned int)a[i]);

char str[256];

memset(&str[0], 0, 256);


for(int i = 0; i<3; i++){
   int ii;
   ii = strlen(&str[0]);
   sprintf(&str[ii], "%1u", (unsigned int)a[i]);       
}/*for*/

printf("%s", &str[0]);

打印结果为112115

如果我想使用十六进制

只是替换

  sprintf(&str[0], "%1u", (unsigned int)a[i]);

作为

  sprintf(&str[0], "%#1x", (unsigned int)a[i]);

在java中,我遇到了同样目的的麻烦。

有一个byte [],我想将它转换为数字数组,但我没有明确的方法来实现目标。

我找到了一种方法:

String str = new String("");
byte[] a = {1, 12, 115};
for(int i = 0; i< 3; i++){
    str  += Integer.toString(a[i].intValue());
}

看起来很笨拙。

有人能给我建议吗?谢谢。

2 个答案:

答案 0 :(得分:2)

您可以将byte []数组转换为String,如下所示:

完成ReEdit:

public static int[] convertToIntArray(byte[] input)
{
    int[] ret = new int[input.length];
    for (int i = 0; i < input.length; i++)
    {
        ret[i] = input[i];
    }
    return ret;
}

以上代码来自:how to convert the byte array into an integer array

然后,您可以将整数数组转换为字符串数组:

int[] nums = {5,1,2,11,3}; //List or Vector
Arrays.sort(nums); //Collections.sort() for List,Vector
String a=Arrays.toString(nums); //toString the List or Vector
String ar[]=a.substring(1,a.length()-1).split(", ");
System.out.println(Arrays.toString(ar));

以上代码来自:Converting an int array to a String array

答案 1 :(得分:1)

在java 8中也很好。

String str = IntStream.of(1, 12, 115)
    .map((b) -> String.format("%02x", b)
    .collect(Collectors.joining(", "));

虽然:没有ByteStream。

旧版java:

String convert(byte[] a) {
    StringWriter sw = new StringWriter();
    PrintWriter wr = new PrintWriter(sw, true);
    for (int i = 0; i < a.length; i++) {
        wr.printf("%02x, a[i]);
    }
    return sw.toString();
}