5个不稳定版本

0.3.1 2019年2月10日
0.3.0 2019年2月10日
0.2.0 2018年12月19日
0.0.2 2018年3月25日
0.0.1 2018年3月19日

#literals中排名150

MIT授权

16KB
328

字节转换工具

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]);

依赖

约2MB
约49K SLoC