2 releases
0.1.1 | Dec 10, 2020 |
---|---|
0.1.0 | Dec 10, 2020 |
#495 in Operating systems
775KB
62 lines
Contains (WOFF font, 190KB) docs/FiraSans-Medium.woff, (WOFF font, 185KB) docs/FiraSans-Regular.woff, (WOFF font, 94KB) docs/SourceSerifPro-Bold.ttf.woff, (WOFF font, 89KB) docs/SourceSerifPro-Regular.ttf.woff, (WOFF font, 56KB) docs/SourceCodePro-Regular.woff, (WOFF font, 56KB) docs/SourceCodePro-Semibold.woff and 1 more.
cpu-endian
cpu-endian
is a portable crate to detect CPU byte order.
It detects how CPU native scalar type is ordered; little-endian or big-endian, or something else (like PDP-endian, mixed-endian, middle-endian, and so on.)
Examples
use cpu_endian::{Endian, working};
// Takes first octet of 0x00ff: u16.
let v: u16 = 0x00ff;
let first_octet: u8 = unsafe {
let ptr = &v as *const u16;
let ptr = ptr as *const u8;
*ptr
};
// If the byte-order is little-endian, the first octet should be 0xff, or if big-endian,
// it should be 0x00.
match working() {
Endian::Little => assert_eq!(0xff, first_octet),
Endian::Big => assert_eq!(0x00, first_octet),
_ => {},
}
Requirements
If the CPU is neither x86
nor x86_64
, C++ compiler with feature c++20 is required.
lib.rs
:
cpu-endian
cpu-endian
is a portable crate to detect CPU byte order.
It detects how CPU native scalar type is ordered; little-endian or big-endian, or something else (like PDP-endian, mixed-endian, middle-endian, and so on.)
Examples
use cpu_endian::{Endian, working};
// Takes first octet of 0x00ff: u16.
let v: u16 = 0x00ff;
let first_octet: u8 = unsafe {
let ptr = &v as *const u16;
let ptr = ptr as *const u8;
*ptr
};
// If the byte-order is little-endian, the first octet should be 0xff, or if big-endian,
// it should be 0x00.
match working() {
Endian::Little => assert_eq!(0xff, first_octet),
Endian::Big => assert_eq!(0x00, first_octet),
_ => {},
}