首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Rust每周一库】hex-处理hex数据

今天介绍一个比较基础和常用的库hex,用来处理十六进制数据的编码。导入库:

[dependencies]

hex="0.4.2"

功能

hex库提供了一些便捷的方法用来编码十六进制数据

decode和decode_to_slice

decode将16进制数据解码成字节并返回,比如下面就将"Hello world!"的16进制模式转化为"Hello world!"的字节表示

assert_eq!(

hex::decode("48656c6c6f20776f726c6421"),

Ok("Hello world!".to_owned().into_bytes())

);

decode_to_slice将16进制数据解码并赋值给一个buffer

letmutbytes = [0u8;4];

assert_eq!(hex::decode_to_slice("6b697769", &mutbytesas&mut[u8]),Ok(()));

assert_eq!(&bytes,b"kiwi");

encode, encode_to_slice和encode_upper

encode可以将输入数据编码返回一个16进制的字符串

assert_eq!(hex::encode("Hello world!"),"48656c6c6f20776f726c6421");

encode_to_slice则把数据人数据编码并赋值给一个buffer

letmutbytes = [0u8;4*2];

hex::encode_to_slice(b"kiwi", &mutbytes)?;

assert_eq!(&bytes,b"6b697769");

encode_upper和encode相同,只是返回的16进制字符串中的字母都变成了大写

assert_eq!(hex::encode_upper("Hello world!"),"48656C6C6F20776F726C6421");

serde支持

打开feature="serde"时,将对字节数据使用hex编码解码

useserde::;

#[derive(Serialize, Deserialize)]

structFoo{

#[serde(with ="hex")]

bar:Vec,

}

小结

好了,hex就是一个简单又基础的库。不过却非常重要。如果你看到那些hex的字符串就能想到些什么,那么恭喜你,这个库一定就是你最常用的库了~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201119A0HOI700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券