翻转hex字符串

根据这里提出的另一个问题, 拆分一个没有空格的hex字符串并将其翻转 ,我在这里更清楚地写出这个新问题。

我有一个这样的Hex字符串:

Hex_string = 2B00FFEC 

我需要的是将Hex字符串的顺序更改为从最新字符开始,所以这将是这样的:

 Fliped_hex_string = ECFF002B 

在另一个问题中,我问了一种使用.split()方法实现此目的的方法。 但应该有另一种方式来更好地实现这一目标。

OP在注释中将字符长度限制为正好8个字符

一个纯粹的数字答案(灵感来自成语转换字节序); 保存往返字符串

n是一个int

 int m = ((n>>24)&0xff) | // byte 3 to byte 0 ((n<<8)&0xff0000) | // byte 1 to byte 2 ((n>>8)&0xff00) | // byte 2 to byte 1 ((n<<24)&0xff000000); // byte 0 to byte 3 

如果需要将其转换为hex,请使用

 String s = Integer.toHexString(m); 

如果你需要从hex设置n ,请使用

 int n = (int)Long.parseLong(hex_string, 16); 

其中hex_string是您的初始字符串。 您需要通过Long解析器来允许否定。

尽可能简单

  String s = "2B00FFEC"; StringBuilder result = new StringBuilder(); for (int i = 0; i <=s.length()-2; i=i+2) { result.append(new StringBuilder(s.substring(i,i+2)).reverse()); } System.out.println(result.reverse().toString()); //op :ECFF002B 

你可以这样做:

 String a = "456789AB"; char[] ca = a.toCharArray(); StringBuilder sb = new StringBuilder(a.length()); for (int i = 0; i 

如果需要,这也可以扩展到更长的字符串

也许你应该尝试这样简单的事情:

 public static String flip(final String hex){ final StringBuilder builder = new StringBuilder(hex.length()); for(int i = hex.length(); i > 1; i-=2) builder.append(hex.substring(i-2, i)); return builder.toString(); } public static void main(String args[]){ System.out.println(flip("2B00FFEC")); } 

输出为: ECFF002B

下次你问一个问题时,也许你应该向我们展示你用来解决问题的一些代码(然后问我们为什么你的代码不起作用,而不是你的问题)。 如果不知道它们是如何工作的,你就不会向我们学习任何答案。

这种方法似乎做你想要的

 String changeHexOrder(String s) { char[] arr = s.toCharArray(); char tmp; //change positions of [i, i + 1 , , , , , ,length - i - 2, length - i - 1] for (int i = 0; i < arr.length / 2; i += 2) { tmp = arr[i]; arr[i] = arr[arr.length-i-2]; arr[arr.length-i-2] = tmp; tmp = arr[i+1]; arr[i+1] = arr[arr.length-i-1]; arr[arr.length-i-1] = tmp; } return new String(arr); } 

这对我有用

  StringBuilder lsbToMsb=new StringBuilder(); for(int i=input.length();i>0;i-=2) { lsbMsb.append(lsbToMsb.substring(i-2,i)); } String lsbMsb=lsbMsb.toString();