如何反转十六进制字符串?
How do I reverse a hex string?
给定一个十六进制字符串,例如"d59c168e05df4757"
,我如何反转这个字符串的字节,以便读取[57, 47, df, 05, 8e, 16, 9c, d5]
?
使用 as_bytes()
方法将每个单独的字符转换为字节值,而不是两个字符的十六进制表示形式。
从字节表示我尝试了以下但没有成功:
let bytes = vec![213, 156, 22, 142, 5, 223, 71, 87];
let bytes_reversed = bytes.iter().rev();
println!("Bytes reversed: {:x?}", bytes_reversed);
//Prints: Bytes reversed: Rev { iter: Iter([d5, 9c, 16, 8e, 5, df, 47, 57]) }
回答我自己的问题 - 以下方法可以反转十六进制字符串的字节:
- 将十六进制字符串转换为字节
- 创建一个新向量
- 在
for
循环中使用 iter().rev()
并且每次迭代 push
进入新向量
下面的示例代码,使用 parse_hex 定义的函数来回答这个 question:
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]
给定一个十六进制字符串,例如"d59c168e05df4757"
,我如何反转这个字符串的字节,以便读取[57, 47, df, 05, 8e, 16, 9c, d5]
?
使用 as_bytes()
方法将每个单独的字符转换为字节值,而不是两个字符的十六进制表示形式。
从字节表示我尝试了以下但没有成功:
let bytes = vec![213, 156, 22, 142, 5, 223, 71, 87];
let bytes_reversed = bytes.iter().rev();
println!("Bytes reversed: {:x?}", bytes_reversed);
//Prints: Bytes reversed: Rev { iter: Iter([d5, 9c, 16, 8e, 5, df, 47, 57]) }
回答我自己的问题 - 以下方法可以反转十六进制字符串的字节:
- 将十六进制字符串转换为字节
- 创建一个新向量
- 在
for
循环中使用iter().rev()
并且每次迭代push
进入新向量
下面的示例代码,使用 parse_hex 定义的函数来回答这个 question:
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]