Метод swap_bytes
Метод swap_bytes меняет порядок байтов
в числе типа i32 на противоположный.
Он возвращает новое значение, в котором первый
байт становится последним, второй - предпоследним
и так далее. Метод не принимает параметров
и не изменяет исходное число.
Чаще всего метод используется при работе с сетевыми протоколами и бинарными форматами данных, где порядок байтов (endianness) может отличаться на разных платформах.
Синтаксис
i32.swap_bytes()
Пример
Давайте поменяем порядок байтов у числа
1 и выведем результат в шестнадцатеричном
виде:
fn main()
{
let res = 1i32.swap_bytes();
println!("{:#010X}", res);
}
Результат выполнения кода:
0x01000000
Пример
Давайте применим метод дважды к числу
12345 и убедимся, что двойной обмен
байтов возвращает исходное значение:
fn main()
{
let res = 12345i32.swap_bytes().swap_bytes();
println!("{}", res);
}
Результат выполнения кода:
12345
Пример
Давайте посмотрим, как меняется число
305419896 при обмене байтов:
fn main()
{
let num = 305419896i32;
let res = num.swap_bytes();
println!("{} -> {}", num, res);
}
Результат выполнения кода:
305419896 -> 2018915346
Смотрите также
-
метод
rotate_left,
который выполняет циклический сдвиг битов влево -
метод
rotate_right,
который выполняет циклический сдвиг битов вправо -
метод
leading_zeros,
который считает количество ведущих нулевых битов -
метод
trailing_zeros,
который считает количество завершающих нулевых битов