如何在java中反转字节数组? [复制]
Posted
技术标签:
【中文标题】如何在java中反转字节数组? [复制]【英文标题】:How to reverse the byte array in java? [duplicate] 【发布时间】:2012-10-05 07:36:14 【问题描述】:可能重复:How do I reverse an int array in Java?
在java中执行Array.Reverse(bytearray)
在C#中的等效函数是什么?
【问题讨论】:
***.com/questions/2137755/… 你想用 Java 还是 C# 来做这个? java2s.com/Code/Java/Collections-Data-Structure/… 你能说一下为什么需要这样做吗?因为如果你想在小端和大端之间切换,有更好的方法可以做到这一点? 实际上,我们正在尝试解密 .net 加密字符串 (RSA)。在这方面,我们遇到了一些填充问题。要解决,我们想反转字节数组。有关更多信息,请单击 @987654324 @ 【参考方案1】:您可以在Arrays.asList
返回的list
上使用Collections.reverse
,对Array
进行操作:-
Byte[] byteArr = new Byte[5];
byteArr[0] = 123; byteArr[1] = 45;
byteArr[2] = 56; byteArr[3] = 67;
byteArr[4] = 89;
List<Byte> byteList = Arrays.asList(byteArr);
Collections.reverse(byteList); // Reversing list will also reverse the array
System.out.println(byteList);
System.out.println(Arrays.toString(byteArr));
输出:-
[89, 67, 56, 45, 123]
[89, 67, 56, 45, 123]
更新:-
或者,您也可以使用:Apache Commons
ArrayUtils#reverse
方法,直接对原始类型数组进行操作:-
byte[] byteArr = new byte[5];
ArrayUtils.reverse(byteArr);
【讨论】:
@MarkoTopolnik 不知道。起初我以为你的意思是别的。谢谢。已编辑。 :) 为方便起见,最实用的方法是使用Arrays.toString(array)
打印数组的内容。
@MarkoTopolnik 好的。我总是使用 array.toString() 并且变得奇怪 HashCodes
.. :( 感谢一百万..【参考方案2】:
您可以使用java.util.Collections.reverse()
。它将java.util.List
作为输入参数。因此,您应该通过 Arrays.asList(byteArray)
或创建一个 List 对象并将字节值添加到其中来将您的 byteArray 转换为 List。
【讨论】:
【参考方案3】:public static void reverse(byte[] array)
if (array == null)
return;
int i = 0;
int j = array.length - 1;
byte tmp;
while (j > i)
tmp = array[j];
array[j] = array[i];
array[i] = tmp;
j--;
i++;
【讨论】:
以上是关于如何在java中反转字节数组? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 Java 中,如何将 InputStream 转换为字节数组 (byte[])? [复制]
在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]
在 Java 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]