gpt4 book ai didi

rust - 如何反转十六进制字符串?

转载 作者:行者123 更新时间:2023-12-03 11:43:49 26 4
gpt4 key购买 nike

给定一个十六进制字符串,例如"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]) }

最佳答案

回答我自己的问题-以下方法可以反转十六进制字符串的字节:

  • 将十六进制字符串转换为字节
  • 创建一个新的矢量
  • 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, 5, 8e, 16, 9c, d5]

    关于rust - 如何反转十六进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66428638/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com