Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字节数组中的数据打印为字符?_Java_Arrays - Fatal编程技术网

Java 如何将字节数组中的数据打印为字符?

Java 如何将字节数组中的数据打印为字符?,java,arrays,Java,Arrays,在字节数组中,我有一条消息的散列值,它由一些负值和正值组成。使用(char)byte[i]语句可以轻松打印正值 现在我怎样才能得到负值呢?如果你乐意用十进制打印,你可以通过掩蔽使其为正值: int positive = bytes[i] & 0xff; 如果你打印出一个散列,使用十六进制会更为传统。在Java中将二进制数据转换为十六进制字符串的堆栈溢出寻址过程中,还有很多其他问题。如果您愿意以十进制打印,您可以通过掩蔽使其为正: int positive = bytes[i] &

在字节数组中,我有一条消息的散列值,它由一些负值和正值组成。使用
(char)byte[i]
语句可以轻松打印正值


现在我怎样才能得到负值呢?

如果你乐意用十进制打印,你可以通过掩蔽使其为正值:

int positive = bytes[i] & 0xff;

如果你打印出一个散列,使用十六进制会更为传统。在Java中将二进制数据转换为十六进制字符串的堆栈溢出寻址过程中,还有很多其他问题。

如果您愿意以十进制打印,您可以通过掩蔽使其为正:

int positive = bytes[i] & 0xff;
byte[] buff = {1, -2, 5, 66};
for(byte c : buff) {
    System.out.format("%d ", c);
}
System.out.println();
如果你打印出一个散列,使用十六进制会更为传统。在Java中,将二进制数据转换为十六进制字符串的堆栈溢出寻址还有很多其他问题

byte[] buff = {1, -2, 5, 66};
for(byte c : buff) {
    System.out.format("%d ", c);
}
System.out.println();
明白了吗

1 -2 5 66 
明白了吗

1 -2 5 66 
怎么样

以下是一些可编译的代码:

byte[] byteArray = new byte[] { -1, -128, 1, 127 };
System.out.println(Arrays.toString(byteArray));
输出:

[-1, -128, 1, 127]
为什么要重新发明轮子…

怎么样

以下是一些可编译的代码:

byte[] byteArray = new byte[] { -1, -128, 1, 127 };
System.out.println(Arrays.toString(byteArray));
输出:

[-1, -128, 1, 127]

为什么要重新发明轮子…

如果要将字节打印为字符,可以使用字符串构造函数

byte[] bytes = new byte[] { -1, -128, 1, 127 };
System.out.println(new String(bytes, 0));

如果要将字节打印为字符,可以使用字符串构造函数

byte[] bytes = new byte[] { -1, -128, 1, 127 };
System.out.println(new String(bytes, 0));

试试这个:
新字符串(字节[])
试试这个:
新字符串(字节[])
试试它:

public static String print(byte[] bytes) {
    StringBuilder sb = new StringBuilder();
    sb.append("[ ");
    for (byte b : bytes) {
        sb.append(String.format("0x%02X ", b));
    }
    sb.append("]");
    return sb.toString();
}
例如:

 public static void main(String []args){
    byte[] bytes = new byte[] { 
        (byte) 0x01, (byte) 0xFF, (byte) 0x2E, (byte) 0x6E, (byte) 0x30
    };

    System.out.println("bytes = " + print(bytes));
 }
输出:
bytes=[0x01 0xFF 0x2E 0x6E 0x30]

试试看:

public static String print(byte[] bytes) {
    StringBuilder sb = new StringBuilder();
    sb.append("[ ");
    for (byte b : bytes) {
        sb.append(String.format("0x%02X ", b));
    }
    sb.append("]");
    return sb.toString();
}
例如:

 public static void main(String []args){
    byte[] bytes = new byte[] { 
        (byte) 0x01, (byte) 0xFF, (byte) 0x2E, (byte) 0x6E, (byte) 0x30
    };

    System.out.println("bytes = " + print(bytes));
 }

输出:
bytes=[0x01 0xFF 0x2E 0x6E 0x30]

构造函数字符串(byte[],int)已弃用。改为使用字符串(字节[],字符集),例如新字符串(字节,字符集.forName(“ISO-8859-1”))。构造函数字符串(字节[],int)不推荐使用。使用字符串(byte[],Charset),例如新字符串(bytes,Charset.forName(“ISO-8859-1”))。您确切地说“as characters”是什么?十进制的十六进制:你说“作为角色”到底是什么意思?十进制的十六进制:如果要将字符打印为十六进制,这是一个更好的选项。看起来它可以将字符打印为数字。如果要将字符打印为十六进制,这是一个更好的选项。看起来它可以将字符打印为数字。在Kotlin中,它是byteArray.contentToString()在Kotlin中,它是byteArray.contentToString()