Rust常用库之处理hex数据hex-literal

文章目录

Rust常用库之处理hex数据hex-literal

需求

十六进制数据解码为raw data(vec)、将字节序列转换为十六进制表示

hex-literal

官方:https://docs.rs/releases/search?query=hex_literal

This crate provides the hex! macro for converting hexadecimal string literals to a byte array at compile time.

It accepts the following characters in the input string:

  • '0'...'9', 'a'...'f', 'A'...'F' --- hex characters which will be used in construction of the output byte array
  • ' ', '\r', '\n', '\t' --- formatting characters which will be ignored

Examples

const DATA: [u8; 4] = hex!("01020304");

assert_eq!(DATA, [1, 2, 3, 4]);

assert_eq!(hex!("a1 b2 c3 d4"), [0xA1, 0xB2, 0xC3, 0xD4]);

assert_eq!(hex!("E5 E6 90 92"), [0xE5, 0xE6, 0x90, 0x92]);

assert_eq!(hex!("0a0B 0C0d"), [10, 11, 12, 13]);

let bytes = hex!("

00010203 04050607

08090a0b 0c0d0e0f

");

assert_eq!(bytes, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);

assert_eq!(hex!("0a0B // 0c0d line comments"), [10, 11]);

assert_eq!(hex!("0a0B // line comments

0c0d"), [10, 11, 12, 13]);

assert_eq!(hex!("0a0B /* block comments / 0c0d"), [10, 11, 12, 13]);
assert_eq!(hex!("0a0B /
multi-line

block comments

*/ 0c0d"), [10, 11, 12, 13]);

相关推荐
shimly12345616 小时前
(done) 速通 rustlings(4) 变量声明
rust
shimly12345617 小时前
(done) 速通 rustlings(11) 向量vector及其操作
rust
shimly12345617 小时前
(done) 速通 rustlings(3) intro1 println!()
rust
shimly12345617 小时前
(done) 速通 rustlings(12) 所有权
rust
shimly12345619 小时前
(done) 速通 rustlings(7) 全局变量/常量
rust
敲敲了个代码19 小时前
构建工具的第三次革命:从 Rollup 到 Rust Bundler,我是如何设计 robuild 的
开发语言·前端·javascript·后端·rust
lpfasd12319 小时前
Tauri 中实现自更新(Auto Update)
rust·tauri·update
shimly12345619 小时前
(done) 速通 rustlings(10) 基本数据类型
rust
shimly12345619 小时前
(done) 速通 rustlings(8) 函数
rust
busideyang19 小时前
MATLAB vs Rust在嵌入式领域的角色定位
开发语言·matlab·rust