在Java中字节与十六进制的相互转换主要思想有两点:
1、二进制字节转十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。
2、十六进制转二进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的十进制数字B与A做"|"运算,即可得到十六进制的二进制字节表示
我测试的Java代码如下:
public class Test01 {
private static String hexStr = "0123456789ABCDEF";
private static String[] binaryArray =
{"0000","0001","0010","0011",
"0100","0101","0110","0111",
"1000","1001","1010","1011",
"1100","1101","1110","1111"};
public static void main(String[] args)
{
String str = "二进制与十六进制互转测试";
System.out.println("源字符串:\n"+str);
String hexString = BinaryToHexString(str.getBytes());
System.out.println("转换为十六进制:\n"+hexString);
System.out.println("转换为二进制:\n"+bytes2BinaryStr(str.getBytes()));
byte [] bArray = HexStringToBinary(hexString);
System.out.println("将str的十六进制文件转换为二进制再转为String:\n"+new String(bArray));
}
/**
*
* @param str
* @return 转换为二进制字符串
*/
public static String bytes2BinaryStr(byte[] bArray){
String outStr = "";
int pos = 0;
for(byte b:bArray){
//高四位
pos = (b&0xF0)>>4;
outStr+=binaryArray[pos];
//低四位
pos=b&0x0F;
outStr+=binaryArray[pos];
}
return outStr;
}
/**
*
* @param bytes
* @return 将二进制转换为十六进制字符输出
*/
public static String BinaryToHexString(byte[] bytes){
String result = "";
String hex = "";
for(int i=0;i<bytes.length;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<len;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;
}
}
运行后的输出结果如下:
源字符串:
二进制与十六进制互转测试
转换为十六进制:
E4BA8CE8BF9BE588B6E4B88EE58D81E585ADE8BF9BE588B6E4BA92E8BDACE6B58BE8AF95
转换为二进制:
11100100 10111010 10001100 11101000 10111111 10011011 11100101 10001000 10110110 11100100 10111000 10001110 11100101 10001101 10000001 11100101 10000101 10101101 11101000 10111111 10011011 11100101 10001000 10110110 11100100 10111010 10010010 11101000 10111101 10101100 11100110 10110101 10001011 11101000 10101111 10010101
将str的十六进制文件转换为二进制并转为String:
二进制与十六进制互转测试
分享到:
相关推荐
本篇将详细阐述如何在Java中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...
在Java编程语言中,将二进制数据转换为十六进制是常见的操作,尤其是在处理二进制数据的编码、解码或数据传输时。这里我们将详细介绍两种不同的方法来实现这个功能。 方法1: 这种方法利用了`Character.forDigit()`...
(3)十进制与十六进制之间的转换: * 十进制转换为十六进制:将十进制数除以16,商数作为高位,余数作为低位。 * 十六进制转换为十进制:将十六进制数按位权乘以16的N-1次方。 (4)二进制与八进制之间的转换: ...
在Java编程中,二进制、字节数组、字符、十六进制和BCD(Binary-Coded Decimal,二进制编码的十进制)编码转换是常见的数据处理任务。以下将详细介绍这些概念以及如何在Java中进行相关操作。 1. **二进制与十六进制...
字节集与十六进制高效互转源码 支持反转。也是以前用汇编写的,其实还有更好的写法,只是我懒得改了。效率嘛,至少可以完爆目前所有公开的易语言。源码。特点:支持按字节反转,作用自己体会,可自动处理长度不正确...
本文将详细介绍 Java 中二进制数据与 16 进制字符串相互转换的方法。 二进制数据 在 Java 中,二进制数据是以 byte 数组的形式存储的,每个 byte 都对应一个二进制数字。例如,0x45 的二进制字节就是 0100 0101。...
在LabVIEW中,"ASCII码字符串与字节数组的互转"是一个重要的功能,主要涉及到以下几个知识点: 1. **ASCII字符串到字节数组**:当我们将ASCII码字符串(如"BA34")转换为字节数组时,LabVIEW会将每个字符转换为它...
本篇将深入探讨如何在C#中进行二进制数组与常规数组之间的转换,以及二进制序列化和JSON序列化的应用及其反序列化过程。 首先,让我们来看看二进制数组与常规数组之间的转换。在C#中,二进制数组通常用byte[]表示,...
这个函数首先将十进制数转换为十六进制字符串,然后根据`flag`参数决定是否需要调整字节顺序。在小端模式下,使用`flip`函数将字符串反转,模拟从低地址到高地址的读取顺序。注意,MATLAB本身是按照大端模式存储数据...
首先,我们需要理解十六进制与字节之间的关系。一个十六进制数可以表示2的4次方(16)种不同的值,而一个字节由8位组成,可以表示2的8次方(256)种不同的值。因此,一个十六进制数字可以对应一个字节的一半。例如,...
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
在Java编程语言中,将16进制的4字节数据转换为浮点数是常见的数据处理操作,尤其是在与硬件设备交互或者进行低级通信时。这个过程涉及到字节顺序的理解,以及Java中的数据类型转换。以下是关于这个主题的详细解释。 ...
Java 16进制与字符串的转换 Java 中的 16 进制与字符串之间的转换是非常重要的一种操作,特别是在数据存储和网络传输时。本文将详细介绍 Java 中的 16 进制与字符串的相互转换函数分类。 将 byte 数组以 16 进制的...
Java进制转换 正整数的十进制转换二进制 将一个十进制数除以二,得到的商再除以二,依此类推直到商等于一或零时为止,倒取除得的余数,即换算为二进制数的结果。只需记住要点:除二取余,倒序排列。 由于计算机...
Java实现的进制转换工具类是Java语言中的一种常用工具类,用于实现各种进制之间的转换操作,如二进制、十六进制、字符串、数组等。该工具类主要提供了将字节数组转换为十六进制字符数组或字符串的方法,以及将字符串...
首先,它将输入的十六进制字符串转换为字节数组,然后使用这些字节尝试以UTF-8、UTF-16(与Unicode相同)、UTF-16LE(小端字节序)、UTF-16BE(大端字节序)、UTF-32以及各自的LE和BE版本进行解码。`str2all`方法则...
这个名为“十进制转十六进制包含大小端设置”的程序集成了两个关键概念:数值系统转换和内存中的字节序。以下是对这些知识点的详细解释: 首先,我们要理解的是**数值系统转换**。在计算机科学中,我们经常需要在...
在这个场景中,我们有一个名为"4字节十六进制转浮点数工具(Excel)"的实用程序,它利用Microsoft Excel的功能将4字节的十六进制数值转换为对应的浮点数表示。这种转换在处理二进制数据、网络通信或低级别编程时尤为...
十六进制的文本文件,转为十六进制格式的二进制文件。 从第一个有效字符开始,每2个有效字符(即0~F)输出一个格式化字节,"0x"、"\r\n"、空格等字符会被跳过。