Функция from_ne_bytes
Функция from_ne_bytes преобразует массив байтов
в целое число, интерпретируя байты в порядке байтов
текущей платформы (native endian). Это означает, что
на little-endian системах байты читаются от младшего
к старшему, а на big-endian - наоборот. Функция
является ассоциированной функцией целочисленных типов
и принимает в качестве параметра массив байтов
фиксированной длины, соответствующей размеру целевого
типа.
Функция доступна для всех целочисленных типов:
i8, i16, i32, i64,
i128, isize, u8, u16,
u32, u64, u128, usize.
Синтаксис
i32::from_ne_bytes(bytes)
u64::from_ne_bytes(bytes)
Пример
Давайте преобразуем массив байтов в число типа
u32:
fn main()
{
let bytes: [u8; 4] = [1, 0, 0, 0];
let res = u32::from_ne_bytes(bytes);
println!("{}", res);
}
Результат выполнения кода на little-endian системе:
1
Пример
Давайте преобразуем массив байтов в число типа
i16:
fn main()
{
let bytes: [u8; 2] = [255, 255];
let res = i16::from_ne_bytes(bytes);
println!("{}", res);
}
Результат выполнения кода:
-1
Пример
Давайте проверим, что from_ne_bytes и
to_ne_bytes являются взаимно обратными
операциями:
fn main()
{
let num: u32 = 12345;
let bytes = num.to_ne_bytes();
let res = u32::from_ne_bytes(bytes);
println!("{}", res);
}
Результат выполнения кода:
12345
Смотрите также
-
функция
from_le_bytes,
которая преобразует байты в число с порядком little-endian -
функция
from_be_bytes,
которая преобразует байты в число с порядком big-endian -
метод
to_ne_bytes,
который преобразует число в массив байтов с порядком текущей платформы -
метод
to_le_bytes,
который преобразует число в массив байтов с порядком little-endian