我不熟悉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());
}
看起来很笨拙。
有人能给我建议吗?谢谢。
答案 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));
答案 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();
}