簡體   English   中英

如何在 java 中將十六進制反轉為反轉十六進制?

[英]How can i reverse a hex to reversed hex in java?

我不知道如何將 java 中的十六進制轉換為反向十六進制,如下例所示:e905c878 -> 78c805e9

我在下面看到另一個問題的代碼,但我不知道如何使用它。

let hex_string: String = String::from("d59c168e05df4757");
let string_to_bytes = parse_hex(&hex_string);
println!("Hex string as bytes: {:?}", string_to_bytes); //Prints: [213, 
156, 22, 142, 5, 223, 71, 87]
let mut bytes_reversed = Vec::new();
for i in string_to_bytes.iter().rev() {
    bytes_reversed.push(i);
}
println!("Bytes reversed: {:x?}", bytes_reversed); //Prints: [57, 47, 
   df, 5, 8e, 16, 9c, d5]

使用StringBuilder

StringBuilder sb = new StringBuilder(hexString);

反轉字符對:

for (int i = 0; i < sb.length(); i += 2) {
  char tmp = sb.charAt(i);
  sb.setCharAt(i, sb.charAt(i+1));
  sb.setCharAt(i+1, tmp);
}

然后反轉整個事情:

sb.reverse();

然后構建:

String reversed = sb.toString();

作為反轉字符對然后反轉字符串的替代方法,您可以直接交換字符對:

for (int i = 0, j = sb.length() - 2; i < j; i += 2, j -= 2) {
  for (int d = 0; d < 2; ++d) {
    char tmp = sb.charAt(i + d);
    sb.setCharAt(i + d, sb.charAt(j + d));
    sb.setCharAt(j + d, tmp);
  }
}

如果你打算做替代方案,你真的不需要使用StringBuilder ,你可以直接在char[]上操作。 StringBuilder提供的唯一真正優勢是能夠自行反轉。


如果十六進制是固定長度(8,在你展示的例子中),你也可以這樣做:

String reversed =
    new StringBuilder(8)
        .append(hexString, 6, 8)
        .append(hexString, 4, 6)
        .append(hexString, 2, 4)
        .append(hexString, 0, 2)
        .toString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM