我知道在Java中我们有字节流和字符流。困惑是如何直接在输出语句中显示字节值。
例如,我在控制台中键入我的名字,然后使用:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in)) ;
String name=br.readLine();
如果我显示名称,我会得到我键入的值。如何以字节值显示它?
如果你的意思是原始字节:
BufferedReader br=new BufferedReader(new InputStreamReader(System.in)) ;
String name=br.readLine();
System.out.write(name.getBytes("UTF-8"));
请注意,输出取决于您选择的特定编码(在本例中为 UTF-8)。
如果你想为每个字节打印一个可读的十六进制值,你必须在上面的代码上做一些工作,但它应该是向前的。
对 UTF-8 编码的字节试试这个:
byte [] bytes = name.getBytes("UTF-8");
for( int i=0; i < bytes.length ;++i)
System.out.println(bytes[i]);
如果要将 UTF-8 字节值显示为十六进制(一种将原始字节数据表示为字符串的便捷方法),则可以执行此操作。
String name=br.readLine();
String nameUTF8Hex = DatatypeConverter.printHexBinary(name.getBytes("UTF-8"));
System.out.println(nameUTF8Hex);
DatatypeConverter.printHexBinary(byte[])
的详细信息