1

我需要像这样拆分一个字符串:

String= 0C46BA09

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

但在这种情况下,我没有将空格设置为条件,所以......我如何分割这个字符串以逐个获取每个字符?

已编辑

这样做的真正目的是反转这个 HEX 字符串,所以是 this0C46BA09来得到 this 09BA460C

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

已编辑 2

最后一个问题的新链接:

翻转十六进制字符串

4

6 回答 6

10

你可以做

char[] charArray = "0C46BA09".toCharArray();
于 2013-09-16T13:28:59.960 回答
5

toCharArray() 在 String 上使用 for each 和 方法

for (Character c : s.toCharArray()) {
        System.out.println(c);
 }

输出/输出:

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
于 2013-09-16T13:29:19.520 回答
2
String s = "0C46BA09";
s.split("");

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

于 2013-09-16T13:31:18.807 回答
2

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

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

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

Integer.toHexString(m);
于 2013-09-16T14:24:21.933 回答
0

你为什么不使用

public String substring (int start, int end) 

那方法呢?

YOURSTRING= YOURSTRING.substring(4,8) + YOURSTRING.substring(0,4);
于 2013-09-16T13:57:04.847 回答
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));
于 2013-09-16T14:15:04.433 回答