java byte[]与十六进制字符串相互转换

案例1

java byte[]与十六进制字符串相互转换

import java.util.Arrays;

public class ccc {

    public static void main(String[] args) {
        int[] array ={-6, 1, 18, 114, 54, 0, -11, 16, 5, 3, -23, -116, -13, -24, 121, 36};
        System.out.println(Arrays.toString(array));
    }
}

String a = "你好";
System.out.println(Arrays.toString(a.getBytes(StandardCharsets.UTF_8)));
byte[] bytes = {-28, -67, -96, -27, -91, -67};
System.out.println(new String(bytes,StandardCharsets.UTF_8));

运行结果:
-28,-67,-96,-27,-91,-67,
你好

案例2


import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;

public class mytest {

	public static void main(String[] args) {
// TODO Auto-generated method stub

byte[] bytes = new byte[]{-76, -1, 32, 30, 36};

char[] chars = getChars(bytes);

byte[] bytes2= getBytes(chars);

char[] chars2 = getChars(bytes2);

}

	/** char转byte */
	public static byte[] getBytes(char[] chars) {
		
		
		
		 int len = chars.length;
		 byte[] bytes = new byte[len];
		
		 for(int i=0;i<len;i++){
		 bytes[i]= (byte)(chars[i]);
		 }
		 return bytes;
	}

	/** byte转char */
	public static char[] getChars(byte[] bytes) {

		 int len = bytes.length;
		 char[] chars = new char[len];
		
		 for(int i=0;i<len;i++){
		 chars[i]= (char)(bytes[i] & 0xff);
		 }
		 return chars;

	}
}

案例3

package com.anjz.test;
 
import java.io.ByteArrayInputStream;
import java.io.IOException;
 
public class ByteArrayTest {
	public static void main(String[] args) throws IOException {
		String str = "你好";
		ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes("utf-8"));
		
		byte[] bytes = new byte[str.getBytes("utf-8").length];
		bis.read(bytes);
		for(byte b :bytes){
			System.out.print(b+",");
		}
	}
}

运行结果:
-28,-67,-96,-27,-91,-67,

案例4

package com.anjz.test;
 
import java.io.ByteArrayInputStream;
import java.io.IOException;
 
public class ByteArrayTest {
	public static void main(String[] args) throws IOException {
		String str = "你好";
		ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes("utf-8"));
		
		int temp = 0;
		while((temp = bis.read())!=-1){
			System.out.print(temp+",");
		}
	}
}

运行结果:
228,189,160,229,165,189,

案例3 与 案例4
实验一中直接输出的byte数据,实验二直接输出的是int数据,但两个数据是不一样的,我们把两个结果的数据放到一块。

-28,-67,-96,-27,-91,-67,

228,189,160,229,165,189,

发现一个规律:每列数据的绝对值加一起是个固定值256,这是一个巧合,还是一个规律?关于这个问题,首先我们看一下bis.read()的源码。

posted @ 2021-03-31 14:02  莫贞俊晗  阅读(278)  评论(0编辑  收藏  举报