#array #split #integer #int

intsplit

Rust库,用于将数值类型分割成二进制组成部分数组

1 个不稳定版本

0.1.0 2024年5月21日

#927数据结构

Download history 147/week @ 2024-05-18 17/week @ 2024-05-25 28/week @ 2024-06-01 24/week @ 2024-06-08 41/week @ 2024-06-15 22/week @ 2024-06-22 29/week @ 2024-06-29 47/week @ 2024-07-06 25/week @ 2024-07-13 41/week @ 2024-07-20 169/week @ 2024-07-27

每月286次下载

MIT/Apache

11KB
293

intsplit

Rust库,用于将数值类型分割成二进制组成部分数组。

示例

use intsplit::*;

#[test]
fn example() {
    let number : u32 = 0x0A0B0C0Du32;
    let u16_components: [u16; 2] = number.as_u16_array();
    assert_eq!([0x0C0Du16, 0x0A0Bu16], u16_components);
}

实现的转换

此库使用没有不安全代码(仅在测试中)来实现转换。Rust编译器将识别所有这些操作本质上都是转换,并且会进行类似的优化(在优化构建中)

u16/i16

  • as_i8_array -> [i8; 2]

u32/i32/f32

  • as_i8_array -> [i8; 4]
  • as_i16_array -> [i16; 2]
  • as_u16_array -> [u16; 2]

u64/i64/f64

  • as_i8_array -> [i8; 8]
  • as_i16_array -> [i16; 4]
  • as_u16_array -> [u16; 4]
  • as_i32_array -> [i32; 2]
  • as_u32_array -> [u32; 2]
  • as_f32_array -> [f32; 2]

u128/i128

  • as_i8_array -> [i8; 16]
  • as_i16_array -> [i16; 8]
  • as_u16_array -> [u16; 8]
  • as_i32_array -> [i32; 4]
  • as_u32_array -> [u32; 4]
  • as_f32_array -> [f32; 4]
  • as_i64_array -> [i64; 2]
  • as_u64_array -> [u64; 2]
  • as_f64_array -> [f64; 2]

注意字节序

请注意,结果始终等同于将 to_ne_bytes() 的结果转换为相应的数组。本读数中提供的示例在大小端目标上可能无法正常工作,因为这会交换断言语句中的 2 个 u16 值,就像将 to_ne_bytes() 的结果 mem::transmute 时,在大小端上不会产生相同的结果。

没有运行时依赖