java 打印byte 16进制_byte值变16进制打印的 方法解析

首先我们要知道比特的大小是多少,Java中的定义为byte ,不论是CC++还是Java,一个字节都是8个位

其表示就是 XXXX XXXX x表示0或者1 而每四个为可以表示为16进制,最小是0=0x0 最大是15=0xF

也就是说一个byte为,可以由两个16进制数字表示,所以可以定义十六进制的数组,下表表示十进制数值,本身是16进制的String

所以1表示为1,10表示为a,15表示为f

上代码:

public static String byteTo16(byte bt){

String[] strHex={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};

String resStr="";

int low =(bt & 15);

int high = bt>>4 & 15;

resStr = strHex[high]+strHex[low];

return resStr;

}

public static void main(String[] args){

Byte bt = 44;

String res = byteTo16(bt);

System.out.println(res);

}

这里我们用到的位运算 & 也就是安位去“与”

比如说一个数字是44,变成二进制为101100,如果16进制表示则需要前面补充0 也就是等于:0010 1100

15是16进制的最大值f,也就是1111 ,所以当0010 1100 & 0000 1111,这样就得到地位四个值,1100=12,strHex[2]=c

低4位已经搞定,用位移运算将第四位一走,44>>4就是0010 1100 为以后等于0000 0010 (1100被移出)

0000 0010 & 15=0010=2,strHex[2]=2

所以高位2地位c字符串相加,得到16进制表示:2c

噹噹!!!完成

首先我们要知道比特的大小是多少,Java中的定义为byte ,不论是CC++还是Java,一个字节都是8个位 其表示就是 XXXX XXXX x表示0或者1 而每四个为可以表示为16进制,最小是0=0x0 最大是15=0xF 也就是说一个byte为,可以由两个16进制数字表示,所以可以定义十六进制的数组,下表表示十进制数值,本身是16进制的String 所以1表示为1,10表示为a,15表示为f 上代码: public static String byteTo16(byte bt){ String[] strHex={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"}; String resStr=""; int low =(bt & 15); int high = bt>>4 & 15; resStr = strHex[high]+strHex[low]; return resStr; } public static void main(String[] args){ Byte bt = 44; String res = byteTo16(bt); System.out.println(res); } 这里我们用到的位运算 & 也就是安位去“与” 比如说一个数字是44,变成二进制为101100,如果16进制表示则需要前面补充0 也就是等于:0010 1100 15是16进制的最大值f,也就是1111 ,所以当0010 1100 & 0000 1111,这样就得到地位四个值,1100=12,strHex[2]=c 低4位已经搞定,用位移运算将第四位一走,44>>4就是0010 1100 为以后等于0000 0010 (1100被移出) 0000 0010 & 15=0010=2,strHex[2]=2 所以高位2地位c字符串相加,得到16进制表示:2c 噹噹!!!完成
经验分享 程序员 微信小程序 职场和发展