#byte-array #macro #values #compile-time #constant #multiple-values #bytification

无 std bytify

一个简单的宏,可以将给定的 const-expr 值写入到连续的字节数组中

7 个不稳定版本

0.4.1 2023年10月24日
0.4.0 2023年10月24日
0.3.1 2019年2月10日
0.2.0 2018年12月19日
0.0.2 2018年3月25日

#479 in 编码

MIT 许可证

21KB
355

字节转换工具

Build Status

该crate提供了一个简单的宏,可以接受多个 const-expr 值作为输入,并在编译时将它们合并成一个连续的字节数组。支持所有原始类型,并且与 #[no_std] 兼容。

use bytify::bytify;

const CAKE: char = '🎂';

assert_eq!(bytify!("The ", CAKE, " is a lie!"), [
    b'T', b'h', b'e',
    b' ',
    0xF0, 0x9F, 0x8E, 0x82,
    b' ',
    b'i', b's',
    b' ',
    b'a',
    b' ',
    b'l', b'i', b'e',
    b'!',
]);

支持类型

所有原始类型(作为字面量或任何其他 const-expr 值)以及 [u8; N]&[u8] 值。

  • 未指定后缀的数字默认为 i32 整数和 f64 浮点数。
  • bool 值被转换为 u8
  • 使用 UTF-8 编码写入 strchar 值。

字节序

bytify! 总是使用当前目标机的本地字节序来写入数据。要切换到小端/大端字节序,分别使用 bytify_le!bytify_be!

use bytify::{bytify_be, bytify_le};

assert_eq!(bytify_le!(1), [0x01, 0x00, 0x00, 0x00]);
assert_eq!(bytify_be!(1), [0x00, 0x00, 0x00, 0x01]);

常量和静态变量

use bytify::bytify;

bytify!(const NO_EVIL: '🙈', '🙉', '🙊');
assert_eq!(NO_EVIL, [0xF0, 0x9F, 0x99, 0x88, 0xF0, 0x9F, 0x99, 0x89, 0xF0, 0x9F, 0x99, 0x8A]);

依赖项

~290KB