std/endians
Source EditЭтот модуль содержит вспомогательные функции для работы с различными порядками байтов (порядком байтов).
Порядок байтов — это порядок байтов значения в памяти. Big-endian означает, что самый значимый байт хранится по наименьшему адресу памяти, а little-endian означает, что наименее значимый байт хранится по наименьшему адресу. См. также https://en.wikipedia.org/wiki/Endianness.
Нестабильный API.
Процедуры
proc swapEndian16(outp, inp: pointer) {.inline, noSideEffect, ...raises: [], tags: [], forbids: [].}- Копирует
inpвoutp, инвертируя порядок байтов. Оба буфера должны содержать не менее 2 байтов.Пример:
var a = [1'u8, 2] var b: array[2, uint8] swapEndian16(addr b, addr a) assert b == [2'u8, 1]
Source Edit proc swapEndian32(outp, inp: pointer) {.inline, noSideEffect, ...raises: [], tags: [], forbids: [].}- Копирует
inpвoutp, инвертируя порядок байтов. Оба буфера должны содержать не менее 4 байтов.Пример:
var a = [1'u8, 2, 3, 4] var b: array[4, uint8] swapEndian32(addr b, addr a) assert b == [4'u8, 3, 2, 1]
Source Edit proc swapEndian64(outp, inp: pointer) {.inline, noSideEffect, ...raises: [], tags: [], forbids: [].}- Копирует
inpвoutp, инвертируя порядок байтов. Оба буфера должны содержать не менее 8 байтов.Пример:
var a = [1'u8, 2, 3, 4, 5, 6, 7, 8] var b: array[8, uint8] swapEndian64(addr b, addr a) assert b == [8'u8, 7, 6, 5, 4, 3, 2, 1]
Source Edit
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/endians.html