[英]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.