java字节转十六进制
时间: 2023-08-30 12:06:08 浏览: 100
Java中可以使用Integer类的静态方法toHexString()将字节转换为十六进制字符串。示例如下:
```java
byte b = 10;
String hex = Integer.toHexString(b & 0xFF);
System.out.println(hex); // 输出 0a
```
首先将字节按位与0xFF,是为了把字节转换成无符号的整数,因为Java中的byte类型是有符号的,而我们需要将其转换成无符号的整数再转换成十六进制。然后使用toHexString()方法将整数转换成十六进制字符串。
相关问题
java 十进制转十六进制 高低位
在 Java 中,可以使用 `Integer.toHexString()` 方法将十进制数转换为十六进制字符串。对于高低位的问题,这取决于你的具体需求。
如果你需要将一个整数按照大端序(高位在前,低位在后)转换为十六进制字符串,可以使用以下代码:
```java
int num = 305419896; // 0x12345678
String hexString = Integer.toHexString(num);
System.out.println(hexString); // 输出 12345678
```
如果你需要将一个整数按照小端序(低位在前,高位在后)转换为十六进制字符串,可以使用以下代码:
```java
int num = 305419896; // 0x12345678
byte[] bytes = ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(num).array();
String hexString = DatatypeConverter.printHexBinary(bytes);
System.out.println(hexString); // 输出 78563412
```
这里使用了 `ByteBuffer` 类来实现小端序的转换,其中 `ByteBuffer.allocate(4)` 创建了一个长度为 4 字节的缓冲区,`ByteOrder.LITTLE_ENDIAN` 指定了字节序为小端序,`putInt(num)` 将整数写入缓冲区,最后调用 `array()` 方法获取缓冲区的字节数组,再使用 `DatatypeConverter.printHexBinary()` 方法将字节数组转换为十六进制字符串。
Java字节数组转换成十六进制字符串
Java中可以使用以下代码将字节数组转换成十六进制字符串:
```
public static String bytesToHex(byte[] bytes) {
char[] hexArray = "0123456789ABCDEF".toCharArray();
char[] hexChars = new char[bytes.length * 2];
for (int i = 0; i < bytes.length; i++) {
int v = bytes[i] & 0xFF;
hexChars[i * 2] = hexArray[v >>> 4];
hexChars[i * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
```
使用方法如下:
```
byte[] bytes = {0x12, 0x34, (byte) 0xAB, (byte) 0xCD};
String hexString = bytesToHex(bytes);
System.out.println(hexString); // output: "1234ABCDEF"
```
阅读全文