如何在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 CommonsArrayUtils#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 中,如何将字节数组转换为十六进制数字字符串,同时保持前导零? [复制]

在java中,如何清除每个方法中的字节[]数组以保护值免受内存转储?

在C++中,如何把字节数组转换成字符串

DELPHI如何读取一个图片,保存到字节数组中