java字节与十六进制_Java中二进制字节与十六进制互转

在Java中字节与十六进制的相互转换主要思想有两点:

1、二进制字节转十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。

2、十六进制转二进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的十进制数字B与A做"|"运算,即可得到十六进制的二进制字节表示

我测试的Java代码如下:

public class Test01 {

private static String hexStr = "0123456789ABCDEF";

public static void main(String[] args)

{

String str = "二进制与十六进制互转测试";

String hexString = BinaryToHexString(str.getBytes());

System.out.println("str转换为十六进制:\n"+hexString);

System.out.println("将str的十六进制文件转换为二进制并转为String:\n"+new String(HexStringToBinary(hexString)));

}

/**

*

* @param bytes

* @return 将二进制转换为十六进制字符输出

*/

public static String BinaryToHexString(byte[] bytes){

String result = "";

String hex = "";

for(int i=0;i

//字节高4位

hex = String.valueOf(hexStr.charAt((bytes[i]&0xF0)>>4));

//字节低4位

hex += String.valueOf(hexStr.charAt(bytes[i]&0x0F));

result +=hex;

}

return result;

}

/**

*

* @param hexString

* @return 将十六进制转换为字节数组

*/

public static byte[] HexStringToBinary(String hexString){

//hexString的长度对2取整,作为bytes的长度

int len = hexString.length()/2;

byte[] bytes = new byte[len];

byte high = 0;//字节高四位

byte low = 0;//字节低四位

for(int i=0;i

//右移四位得到高位

high = (byte)((hexStr.indexOf(hexString.charAt(2*i)))<<4);

low = (byte)hexStr.indexOf(hexString.charAt(2*i+1));

bytes[i] = (byte) (high|low);//高地位做或运算

}

return bytes;

}

}

运行后的输出结果如下:

str转换为十六进制:

B6FEBDF8D6C6D3EBCAAEC1F9BDF8D6C6BBA5D7AAB2E2CAD4

将str的十六进制文件转换为二进制并转为String:

二进制与十六进制互转测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值