拆分没有空格的十六进制字符串并翻转它

时间:2013-09-16 13:28:08

标签: java android string split

我需要拆分这样的字符串:

String= 0C46BA09

我知道了StringTokenizer和String.split()方法的展位,我用它们来分隔带空格的字符串。

但是在这种情况下我没有空格来设置条件,所以......我怎么能拆分这个字符串来逐个获取每个字符?

EDITED

这样做的真正目的是扭转此HEX字符串,因此请0C46BA09获取此09BA460C

所以,我想知道是否有一种简单的方法,或者split()方法是获得它的唯一方法。

已编辑2

最后一个问题的新链接:

Flip a Hex String

6 个答案:

答案 0 :(得分:10)

你可以做到

char[] charArray = "0C46BA09".toCharArray();

答案 1 :(得分:5)

在String

上使用每个toCharArray()方法
for (Character c : s.toCharArray()) {
        System.out.println(c);
 }

O / P:

0
C
4
6
B
A
0
9

更新

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

答案 2 :(得分:2)

String s = "0C46BA09";
s.split("");

这应该做的工作。结果将是{ "", "0", "C", "4", "6", "B", "A", "0", "9", "" }

答案 3 :(得分:2)

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

nint

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

如果你真的需要十六进制,

Integer.toHexString(m);

答案 4 :(得分:0)

为什么不使用

public String substring (int start, int end) 

方法呢?

YOURSTRING= YOURSTRING.substring(4,8) + YOURSTRING.substring(0,4);

答案 5 :(得分:0)

如果你的目标是颠倒十六进制字符串的顺序,那么这段代码可能会有所帮助。

String s = "0C46BA09";

long b = Long.parseLong(s, 16);
long l;
l += ((byte)b >> 0) << 24;
l += ((byte)b >> 8) << 16;
l += ((byte)b >> 16) << 8;
l += ((byte)b >> 24) << 0;

System.out.println(Long.toHexString(l));