Java byte[] 数组中项目的倒序
reverse order of items in a Java byte[] array
我在正确颠倒字节数组中项目的顺序时遇到问题。我想将以下字符串翻转为以下字符串:
original "\u042F\u0490\u0418\u0432\u0435\u0442"
flipped "\u0442\u0435\u0432\u0418\u0490\u042F"
我试过类似的东西,但这不起作用。
public byte[] invert(byte[] input) {
ByteBuffer bb = ByteBuffer.wrap(input);
bb.order(ByteOrder.LITTLE_ENDIAN);
byte[] b = bb.array();
return b;
}
有什么想法吗?
不要试图将 Unicode 字符视为字节!最简单的方法是创建一个字符串 (String(byte[])
) 获取字符 (String.toCharArray()
) 并将它们以相反的顺序写入 char[]
,然后通过再次字符串。
这将执行您的示例显示您正在寻找的内容:
String reversed = new StringBuilder(str).reverse().toString();
您可能需要将 byte[]
解码为 String
,然后使用正确的字符编码将反向 String
编码回 byte[]
。
我在正确颠倒字节数组中项目的顺序时遇到问题。我想将以下字符串翻转为以下字符串:
original "\u042F\u0490\u0418\u0432\u0435\u0442"
flipped "\u0442\u0435\u0432\u0418\u0490\u042F"
我试过类似的东西,但这不起作用。
public byte[] invert(byte[] input) {
ByteBuffer bb = ByteBuffer.wrap(input);
bb.order(ByteOrder.LITTLE_ENDIAN);
byte[] b = bb.array();
return b;
}
有什么想法吗?
不要试图将 Unicode 字符视为字节!最简单的方法是创建一个字符串 (String(byte[])
) 获取字符 (String.toCharArray()
) 并将它们以相反的顺序写入 char[]
,然后通过再次字符串。
这将执行您的示例显示您正在寻找的内容:
String reversed = new StringBuilder(str).reverse().toString();
您可能需要将 byte[]
解码为 String
,然后使用正确的字符编码将反向 String
编码回 byte[]
。