如何解决如何反转十六进制字符串?
给定一个十六进制字符串,例如"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,57]) }
解决方法
回答我自己的问题 - 以下方法可以反转十六进制字符串的字节:
- 将十六进制字符串转换为字节
- 创建一个新的向量
- 在
iter().rev()
循环中使用for
,每次迭代push
到新向量中
下面的示例代码,使用在此 question 的答案中定义的 parse_hex 函数:
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,8e,16,9c,d5]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。