如何在java中将字节数组转换为hexString? [复制]
Posted
技术标签:
【中文标题】如何在java中将字节数组转换为hexString? [复制]【英文标题】:How to Convert byte array to hexString in java? [duplicate] 【发布时间】:2013-03-03 23:33:39 【问题描述】:我有一个由十六进制值组成的字节数组,例如CA ,FA,21,33
但我想在JList
中将它们列为单个元素CAFA2133
。
为了在 JList 中列出它们,我想我需要将其转换为 string
。
那么有什么推荐的吗?
【问题讨论】:
【参考方案1】:public static String bytesToHex(byte[] in)
final StringBuilder builder = new StringBuilder();
for(byte b : in)
builder.append(String.format("%02x", b));
return builder.toString();
【讨论】:
【参考方案2】:您需要查看String.format() 和Formatter 规范。
例如
String.format("%02x", byteValue);
遍历数组并将每个String.format()
结果附加到StringBuilder
【讨论】:
漂亮而简单。我不需要在其他重复的问题和答案上筛选文字墙:) 可以,但是基于字节操作比下面的方法耗时大约3倍 有趣。您可以链接到下面的具体答案吗?【参考方案3】:怎么样:
public static String bytesToHex(byte[] bytes)
final char[] hexArray = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F';
char[] hexChars = new char[bytes.length * 2];
int v;
for ( int j = 0; j < bytes.length; j++ )
v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
return new String(hexChars);
Source
【讨论】:
看起来像是从重复的问题中复制和粘贴。您至少应该提及您复制它的来源。 他确实将源链接作为答案的一部分 @MrSmith42:我已经为你把源代码加粗了;)【参考方案4】:此方法应该为您执行此操作..将字节数组作为参数传递以返回十六进制字符串...
private static String convertToHexString(byte[] data)
StringBuffer buf = new StringBuffer();
for (int i = 0; i < data.length; i++)
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
while(two_halfs++ < 1);
return buf.toString();
希望有帮助..
【讨论】:
【参考方案5】:您可以使用Integer.toStringint i, int radix)
将每个数字转换为十六进制字符串,然后将它们连接在一起。现在您只需要将字节转换为 int。
【讨论】:
【参考方案6】:请参阅Integer
的toHexString
。
将您的 byte
转换为 int
然后获取结果字符串应该可以解决问题。
当然,您必须将字符串与StringBuilder
连接起来。
【讨论】:
【参考方案7】:import java.util.HashMap;
public class NumUtil
private static HashMap<Byte,char[]>byteToHex=new HashMap<Byte, char[]>();
static
for(int i=0;i<16;++i)
byteToHex.put((byte)i, new char[]'0',Integer.toHexString(i).charAt(0));
for(int i=16;i<256;++i)
byteToHex.put((byte)i, Integer.toHexString(i).toCharArray());
public static String toHexString(byte[]bytes)
StringBuilder stringBuilder = new StringBuilder(bytes.length*2);
for(byte b:bytes)
stringBuilder.append(byteToHex.get(b));
return stringBuilder.toString();
【讨论】:
【参考方案8】:如果这个数组有 4 个字节长,你可以连接字节并使用 Integer.toString(int, int) 方法。
byte[] array = /* initialization */;
int x = 0;
for (int i = 0, l = Math.min(array.length, 4); i < l; i++)
x <<= 8;
x |= (array[i] & 0xFF);
String hex = Integer.toString(x, 16);
【讨论】:
以上是关于如何在java中将字节数组转换为hexString? [复制]的主要内容,如果未能解决你的问题,请参考以下文章