一、字节数组转String乱码
当将字节数组转换成String时,经常会出现乱码的情况。这是由于编码方式不一致导致的。需要在转换之前指定编码方式。例如,在将UTF-8编码的字节数组转换成String时,应该使用如下代码:
byte[] byteArray = {72, 101, 108, 108, 111, 32, -26, -106, -121, -25, -67, -92, -28, -72, -117}; String str = new String(byteArray, "UTF-8"); System.out.println(str); // "Hello 世界"
如果没有指定编码方式,则使用平台默认的编码方式。在不同的平台上,可能会有不同的默认编码方式,因此应该尽量避免使用默认编码方式。
二、字节数组怎么转String
将字节数组转换成String,可以使用String类的构造函数,如下所示:
byte[] byteArray = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100}; String str = new String(byteArray); System.out.println(str); // "Hello World"
在此例中,将一个字节数组转换成了一个ASCII字符串。
三、字节数组转inputstream
将字节数组转换成InputStream,可以使用ByteArrayInputStream类,如下所示:
byte[] byteArray = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100}; ByteArrayInputStream inputStream = new ByteArrayInputStream(byteArray); int data; while ((data = inputStream.read()) != -1) { System.out.println((char) data); }
在此例中,使用ByteArrayInputStream将字节数组转换成了InputStream,并按字节读取了数据并输出。
四、字节数组转int
将字节数组转换成int,可以使用ByteBuffer类,如下所示:
byte[] byteArray = {0x12, 0x34, 0x56, 0x78}; int num = ByteBuffer.wrap(byteArray).getInt(); System.out.println(num); // 305419896
在此例中,将一个字节数组转换成了一个int类型的数据。
五、字节数组转换成字符串
将字节数组转换成字符串,可以使用Base64编码,如下所示:
byte[] byteArray = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100}; String str = Base64.getEncoder().encodeToString(byteArray); System.out.println(str); // "SGVsbG8gV29ybGQ="
在此例中,使用Base64编码将字节数组转换成字符串。
六、字节数组转16进制
将字节数组转换成16进制字符串,可以使用BigInteger类,如下所示:
byte[] byteArray = {0x12, 0x34, 0x56, 0x78}; String hexStr = new BigInteger(1, byteArray).toString(16); System.out.println(hexStr); // "12345678"
在此例中,将一个字节数组转换成了一个字符串类型的16进制数。
七、字节数组转json
将字节数组转换成JSON格式,可以使用Jackson库,如下所示:
byte[] byteArray = {123, 34, 110, 97, 109, 101, 34, 58, 34, 74, 111, 104, 110, 34, 125}; ObjectMapper mapper = new ObjectMapper(); JsonNode node = mapper.readTree(byteArray); System.out.println(node.get("name").asText()); // "John"
在此例中,将一个字节数组转换成了一个JSON对象,并按属性读取了其中的数据。
八、字节数组转为输入流
将字节数组转换成InputStream,可以使用ByteArrayInputStream类,如下所示:
byte[] byteArray = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100}; InputStream inputStream = new ByteArrayInputStream(byteArray); int data; while ((data = inputStream.read()) != -1) { System.out.println((char) data); }
在此例中,使用ByteArrayInputStream将字节数组转换成了InputStream,并按字节读取了数据并输出。
九、字节数组转化为字符串
将字节数组转换成String类型的字符串,直接使用String类的构造函数即可:
byte[] byteArray = {72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100}; String str = new String(byteArray); System.out.println(str); // "Hello World"
在此例中,将一个字节数组转换成了一个ASCII字符串。
十、字节数组转浮点数
将字节数组转换成浮点数,可以使用ByteBuffer类,如下所示:
byte[] byteArray = {63, -93, -23, -48}; float num = ByteBuffer.wrap(byteArray).getFloat(); System.out.println(num); // 0.12345679
在此例中,将一个字节数组转换成了一个float类型的数据。