Spec-Zone.ru › OCaml 4.14

Модуль StdLabels.Bytes

module Bytes: BytesLabels
val length : bytes -> int

Возвращает длину (количество байтов) аргумента.

val get : bytes -> int -> char

get s n возвращает байт по индексу n в аргументе s.

  • Возвышает Invalid_argument если n не является допустимым индексом в s.
val set : bytes -> int -> char -> unit

set s n c изменяет s на месте, заменяя байт по индексу n на c.

  • Возвышает Invalid_argument если n не является допустимым индексом в s.
val create : int -> bytes

create n возвращает новую последовательность байтов длиной n. Последовательность не инициализирована и содержит произвольные байты.

  • Возвышает Invalid_argument если n < 0 или n > Sys.max_string_length.
val make : int -> char -> bytes

make n c возвращает новую последовательность байтов длиной n, заполненную байтом c.

  • Возвышает Invalid_argument если n < 0 или n > Sys.max_string_length.
val init : int -> f:(int -> char) -> bytes

init n f возвращает новую последовательность байтов длиной n, с символом i инициализированным результатом f i (в порядке возрастания индекса).

  • Возвышает Invalid_argument если n < 0 или n > Sys.max_string_length.
val empty : bytes

Последовательность байтов размера 0.

val copy : bytes -> bytes

Возвращает новую последовательность байтов, содержащую те же байты, что и аргумент.

val of_string : string -> bytes

Возвращает новую последовательность байтов, содержащую те же байты, что и данная строка.

val to_string : bytes -> string

Возвращает новую строку, содержащую те же байты, что и данная последовательность байтов.

val sub : bytes -> pos:int -> len:int -> bytes

sub s ~pos ~len возвращает новую последовательность байтов длиной len, содержащую подпоследовательность s, которая начинается с позиции pos и имеет длину len.

  • Возвышает Invalid_argument если pos и len не обозначают допустимый диапазон s.
val sub_string : bytes -> pos:int -> len:int -> string

То же, что и BytesLabels.sub, но возвращает строку вместо последовательности байтов.

val extend : bytes -> left:int -> right:int -> bytes

extend s ~left ~right возвращает новую последовательность байтов, содержащую байты s, с left неинициализированными байтами, добавленными в начало, и right неинициализированными байтами, добавленными в конец. Если left или right отрицательны, то байты удаляются (вместо добавления) из соответствующей стороны s.

  • С момента 4.05.0 в BytesLabels
  • Возвышает Invalid_argument если длина результата отрицательная или длиннее, чем Sys.max_string_length байт.
val fill : bytes -> pos:int -> len:int -> char -> unit

fill s ~pos ~len c изменяет s на месте, заменяя len символов на c, начиная с pos.

  • Возвышает Invalid_argument если pos и len не обозначают допустимый диапазон s.
val blit : src:bytes -> src_pos:int -> dst:bytes -> dst_pos:int -> len:int -> unit

blit ~src ~src_pos ~dst ~dst_pos ~len копирует len байтов из последовательности src, начиная с индекса src_pos, в последовательность dst, начиная с индекса dst_pos . Она работает корректно даже если src и dst являются одной и той же последовательностью байтов, а исходный и целевой интервалы перекрываются.

  • Возвышает Invalid_argument если src_pos и len не обозначают допустимый диапазон src, или если dst_pos и len не обозначают допустимый диапазон dst.
val blit_string : src:string -> src_pos:int -> dst:bytes -> dst_pos:int -> len:int -> unit

blit ~src ~src_pos ~dst ~dst_pos ~len копирует len байтов из строки src, начиная с индекса src_pos, в последовательность байтов dst, начиная с индекса dst_pos.

  • С момента 4.05.0 в BytesLabels
  • Возвышает Invalid_argument если src_pos и len не обозначают допустимый диапазон src, или если dst_pos и len не обозначают допустимый диапазон dst.
val concat : sep:bytes -> bytes list -> bytes

concat ~sep sl конкатенирует список последовательностей байтов sl, вставляя разделитель последовательность байтов sep между каждым, и возвращает результат в виде новой последовательности байтов.

  • Возвышает Invalid_argument если результат длиннее, чем Sys.max_string_length байт.
val cat : bytes -> bytes -> bytes

cat s1 s2 конкатенирует s1 и s2 и возвращает результат в виде новой последовательности байтов.

  • С момента 4.05.0 в BytesLabels
  • Возвышает Invalid_argument если результат длиннее, чем Sys.max_string_length байт.
val iter : f:(char -> unit) -> bytes -> unit

iter ~f s применяет функцию f по очереди ко всем байтам s. Это эквивалентно f (get s 0); f (get s 1); ...; f (get s
    (length s - 1)); ()
.

val iteri : f:(int -> char -> unit) -> bytes -> unit

Аналогично BytesLabels.iter, но функция применяется к индексу байта в качестве первого аргумента и к самому байту как второму аргументу.

val map : f:(char -> char) -> bytes -> bytes

map ~f s применяет функцию f по очереди ко всем байтам s (в порядке возрастания индекса) и сохраняет результирующие байты в новой последовательности, которая возвращается как результат.

val mapi : f:(int -> char -> char) -> bytes -> bytes

mapi ~f s вызывает f с каждым символом s и его индексом (в порядке возрастания индекса) и сохраняет результирующие байты в новой последовательности, которая возвращается как результат.

val fold_left : f:('a -> char -> 'a) -> init:'a -> bytes -> 'a

fold_left f x s вычисляет f (... (f (f x (get s 0)) (get s 1)) ...) (get s (n-1)), где n — длина s.

  • С момента 4.13.0
val fold_right : f:(char -> 'a -> 'a) -> bytes -> init:'a -> 'a

fold_right f s x вычисляет f (get s 0) (f (get s 1) ( ... (f (get s (n-1)) x) ...)), где n — длина s.

  • С момента 4.13.0
val for_all : f:(char -> bool) -> bytes -> bool

for_all p s проверяет, удовлетворяют ли все символы в s предикату p.

  • С момента 4.13.0
val exists : f:(char -> bool) -> bytes -> bool

exists p s проверяет, удовлетворяет ли хотя бы один символ из s предикату p.

  • С момента 4.13.0
val trim : bytes -> bytes

Возвращает копию аргумента без начальных и конечных пробелов. Байты, рассматриваемые как пробелы, это ASCII-символы ' ', '\012', '\n', '\r', и '\t'.

val escaped : bytes -> bytes

Возвращает копию аргумента, где специальные символы представлены последовательностями экранирования, следуя лексическим соглашениям OCaml. Все символы за пределами напечатанного диапазона ASCII (32..126) экранируются, а также обратная косая черта и двойная кавычка.

  • Возвышает Invalid_argument если длина результата длиннее, чем Sys.max_string_length байт.
val index : bytes -> char -> int

index s c возвращает индекс первого вхождения байта c в s.

  • Возвышает Not_found если c не встречается в s.
val index_opt : bytes -> char -> int option

index_opt s c возвращает индекс первого вхождения байта c в s или None, если c не встречается в s.

  • С момента 4.05
val rindex : bytes -> char -> int

rindex s c возвращает индекс последнего вхождения байта c в s.

  • Возвышает Not_found если c не встречается в s.
val rindex_opt : bytes -> char -> int option

rindex_opt s c возвращает индекс последнего вхождения байта c в s или None, если c не встречается в s.

  • Since 4.05
val index_from : bytes -> int -> char -> int

index_from s i c возвращает индекс первого вхождения байта c в s после позиции i. index s c эквивалентно index_from s 0 c.

  • Raises
    • Invalid_argument если i не является допустимой позицией в s.
    • Not_found если c не встречается в s после позиции i.
val index_from_opt : bytes -> int -> char -> int option

index_from_opt s i c возвращает индекс первого вхождения байта c в s после позиции i или None, если c не встречается в s после позиции i. index_opt s c эквивалентно index_from_opt s 0 c.

  • Since 4.05
  • Raises Invalid_argument если i не является допустимой позицией в s.
val rindex_from : bytes -> int -> char -> int

rindex_from s i c возвращает индекс последнего вхождения байта c в s перед позицией i+1. rindex s c эквивалентно rindex_from s (length s - 1) c.

  • Raises
    • Invalid_argument если i+1 не является допустимой позицией в s.
    • Not_found если c не встречается в s перед позицией i+1.
val rindex_from_opt : bytes -> int -> char -> int option

rindex_from_opt s i c возвращает индекс последнего вхождения байта c в s перед позицией i+1 или None, если c не встречается в s перед позицией i+1. rindex_opt s c эквивалентно rindex_from s (length s - 1) c.

  • Since 4.05
  • Raises Invalid_argument если i+1 не является допустимой позицией в s.
val contains : bytes -> char -> bool

contains s c проверяет, появляется ли байт c в s.

val contains_from : bytes -> int -> char -> bool

contains_from s start c проверяет, появляется ли байт c в s после позиции start. contains s c эквивалентно contains_from
    s 0 c
.

  • Raises Invalid_argument если start не является допустимой позицией в s.
val rcontains_from : bytes -> int -> char -> bool

rcontains_from s stop c проверяет, появляется ли байт c в s перед позицией stop+1.

  • Raises Invalid_argument если stop < 0 или stop+1 не являются допустимой позицией в s.
val uppercase : bytes -> bytes
Устаревшее. Функции, работающие с набором символов Latin-1, устарели.

Возвращает копию аргумента, с переводом всех строчных букв в прописные, включая назаковленные буквы набора символов ISO Latin-1 (8859-1).

val lowercase : bytes -> bytes
Устаревшее. Функции, работающие с набором символов Latin-1, устарели.

Возвращает копию аргумента, с переводом всех прописных букв в строчные, включая назаковленные буквы набора символов ISO Latin-1 (8859-1).

val capitalize : bytes -> bytes
Устаревшее. Функции, работающие с набором символов Latin-1, устарели.

Возвращает копию аргумента, с первой буквой в прописной форме, используя набор символов ISO Latin-1 (8859-1).

val uncapitalize : bytes -> bytes
Устаревшее. Функции, работающие с набором символов Latin-1, устарели.

Возвращает копию аргумента, с первой буквой в строчной форме, используя набор символов ISO Latin-1 (8859-1).

val uppercase_ascii : bytes -> bytes

Возвращает копию аргумента, с переводом всех строчных букв в прописные, используя набор символов US-ASCII.

  • Since 4.05.0
val lowercase_ascii : bytes -> bytes

Возвращает копию аргумента, с переводом всех прописных букв в строчные, используя набор символов US-ASCII.

  • Since 4.05.0
val capitalize_ascii : bytes -> bytes

Возвращает копию аргумента, с первой буквой в прописной форме, используя набор символов US-ASCII.

  • Since 4.05.0
val uncapitalize_ascii : bytes -> bytes

Возвращает копию аргумента, с первой буквой в строчной форме, используя набор символов US-ASCII.

  • Since 4.05.0
type t = bytes 

Псевдоним для типа последовательностей байтов.

val compare : t -> t -> int

Функция сравнения для последовательностей байтов, с теми же спецификациями, что и compare. Вместе с типом t, эта функция compare позволяет модулю Bytes быть аргументом для функторов Set.Make и Map.Make.

val equal : t -> t -> bool

Функция равенства для последовательностей байтов.

  • Since 4.05.0
val starts_with : prefix:bytes -> bytes -> bool

starts_with ~prefix s равно true, если и только если s начинается с prefix.

  • Since 4.13.0
val ends_with : suffix:bytes -> bytes -> bool

ends_with suffix s равно true, если и только если s оканчивается на suffix.

  • Since 4.13.0

Небезопасные преобразования (для опытных пользователей)

Этот раздел описывает небезопасные, низкоуровневые функции преобразования между bytes и string. Они не копируют внутренние данные; неправильное использование может нарушить инвариант неизменяемости строк, предоставленный опцией -safe-string . Они доступны авторам специализированных библиотек, но для большинства случаев вы должны использовать всегда корректные BytesLabels.to_string и BytesLabels.of_string вместо них.

val unsafe_to_string : bytes -> string

Небезопасно преобразовать последовательность байтов в строку.

Чтобы рассуждать о применении unsafe_to_string, удобно использовать концепцию «владения». Часть кода, которая манипулирует данными, «владеет» ими; существуют несколько различных режимов владения, включая:

  • Уникальное владение: к данным можно получить доступ и изменять их.
  • Разделяемое владение: к данным имеют доступ несколько владельцев, но они могут только читать их, а не изменять.

Уникальное владение является линейным: передача данных другой части кода означает передачу владения (мы не можем повторно записать данные). Уникальный владелец может преобразовать данные в разделяемые (отказавшись от прав на изменение), но разделяемые данные не могут стать уникальными снова.

unsafe_to_string s может использоваться только тогда, когда вызывающий код владеет последовательностью байтов s — либо уникально, либо как разделяемые неизменяемые данные. Вызывающий код отказывается от владения s, и получает владение возвращенной строкой.

Существует два допустимых случая использования, которые соответствуют этой дисциплине владения:

1. Создание строки путем инициализации и изменения последовательности байтов, которая никогда не изменяется после инициализации.

let string_init len f : string =
  let s = Bytes.create len in
  for i = 0 to len - 1 do Bytes.set s i (f i) done;
  Bytes.unsafe_to_string s
   

Эта функция безопасна, потому что к последовательности байтов s никогда не будет обращаться или изменять после вызова unsafe_to_string. Код string_init отказывается от владения s, и возвращает владение полученной строкой своему вызывающему коду.

Обратите внимание, что это было бы небезопасно, если бы s передавался в качестве дополнительного параметра функции f, так как он мог бы таким образом «сбежать» и быть изменён в будущем — string_init отказался бы от владения s для передачи его f, и не смог бы безопасно вызвать unsafe_to_string.

Мы предоставили функции String.init, String.map и String.mapi, чтобы покрыть большинство случаев создания новых строк. Вы должны отдавать предпочтение этим функциям перед to_string или unsafe_to_string всякий раз, когда это возможно.

2. Временная передача владения последовательностью байтов функции, которая ожидает уникальное владение строкой и возвращает владение обратно, чтобы мы могли снова изменить последовательность после завершения вызова.

let bytes_length (s : bytes) =
  String.length (Bytes.unsafe_to_string s)
   

В этом случае мы не гарантируем, что s никогда не будет изменён после вызова bytes_length s. Функция String.length временно заимствует уникальное владение последовательностью байтов (и рассматривает её как string), но возвращает это владение обратно вызывающему коду, который может предположить, что s по-прежнему является корректной последовательностью байтов после вызова. Обратите внимание, что это верно только потому, что мы знаем, что String.length не сохраняет ссылку на свой аргумент — он может «сбежать» через побочный канал, такой как мемоизационный комбинатор.

Вызывающий код не может изменять s, пока строка заимствована (он временно отказался от владения). Это влияет на конкурентные программы, а также на функции высшего порядка: если String.length возвращает замыкание, которое должно быть вызвано позже, s не должно изменяться до тех пор, пока это замыкание не будет полностью применено и не вернёт владение.

val unsafe_of_string : string -> bytes

Небезопасно преобразовать разделяемую строку в последовательность байтов, которую нельзя изменять.

Такая же дисциплина владения, которая делает unsafe_to_string корректной, применяется к unsafe_of_string: вы можете использовать её, если вы являетесь владельцем значения string, и вы будете владеть результатом bytes в том же режиме.

На практике уникальное владение значениями строк очень трудно правильно обрабатывать. Вы всегда должны предполагать, что строки разделяемые, а не уникальные.

Например, строковые литералы неявно разделяются компилятором, поэтому вы никогда не владеете ими уникально.

let incorrect = Bytes.unsafe_of_string "hello"
let s = Bytes.of_string "hello"
    

Первое объявление неверно, потому что строковый литерал "hello" может быть разделен компилятором с другими частями программы, и изменение incorrect является ошибкой. Вы всегда должны использовать вторую версию, которая выполняет копирование и, таким образом, является корректной.

Предположение об уникальном владении строками, которые не являются строковыми литералами, но (частично) построены из строковых литералов, также неверно. Например, изменение unsafe_of_string ("foo" ^ s) может изменить разделяемую строку "foo" — предполагая представление строк в виде «веревки». В более общем случае функции, работающие со строками, будут предполагать разделяемое владение, они не сохраняют уникальное владение. Следовательно, неверно предполагать уникальное владение результатом unsafe_of_string.

Единственный случай, в котором мы можем с достаточной уверенностью гарантировать безопасность, — это если полученная bytes является разделяемой — используется как неизменяемая последовательность байтов. Это может быть полезно для пошаговой миграции низкоуровневых программ, манипулирующих неизменяемыми последовательностями байтов (например, Marshal.from_bytes) и ранее использовавших тип string для этой цели.

val split_on_char : sep:char -> bytes -> bytes list

split_on_char sep s возвращает список всех (возможно пустых) подпоследовательностей s, которые ограничены символом sep.

Выход функции определяется следующими инвариантами:

  • Список не пуст.
  • Конкатенация его элементов с использованием sep в качестве разделителя возвращает последовательность байтов, равную входному значению (Bytes.concat (Bytes.make 1 sep)
          (Bytes.split_on_char sep s) = s
    ).
  • Ни одна последовательность байтов в результате не содержит символ sep.
  • Since 4.13.0

Итераторы

val to_seq : t -> char Seq.t

Итерироваться по строке в порядке возрастания индексов. Изменения строки во время итерации будут отражены в последовательности.

  • Since 4.07
val to_seqi : t -> (int * char) Seq.t

Итерироваться по строке в порядке возрастания, возвращая индексы вместе с символами.

  • Since 4.07
val of_seq : char Seq.t -> t

Создать строку из генератора.

  • Since 4.07

Кодировки и валидация UTF

UTF-8

val get_utf_8_uchar : t -> int -> Uchar.utf_decode

get_utf_8_uchar b i декодирует символ UTF-8 по индексу i в b.

val set_utf_8_uchar : t -> int -> Uchar.t -> int

set_utf_8_uchar b i u кодирует UTF-8 символ u по индексу i в b и возвращает количество записанных байт n, начиная с i. Если n равно 0, то не хватило места для кодирования u в i, и b остались неизмененными. В противном случае новый символ может быть закодирован в i + n.

val is_valid_utf_8 : t -> bool

is_valid_utf_8 b является true, если и только если b содержит валидные данные UTF-8.

UTF-16BE

val get_utf_16be_uchar : t -> int -> Uchar.utf_decode

get_utf_16be_uchar b i декодирует символ UTF-16BE по индексу i в b.

val set_utf_16be_uchar : t -> int -> Uchar.t -> int

set_utf_16be_uchar b i u кодирует UTF-16BE символ u по индексу i в b и возвращает количество записанных байт n, начиная с i. Если n равно 0, то не хватило места для кодирования u в i, и b остались неизмененными. В противном случае новый символ может быть закодирован в i + n.

val is_valid_utf_16be : t -> bool

is_valid_utf_16be b является true, если и только если b содержит валидные данные UTF-16BE.

UTF-16LE

val get_utf_16le_uchar : t -> int -> Uchar.utf_decode

get_utf_16le_uchar b i декодирует символ UTF-16LE по индексу i в b.

val set_utf_16le_uchar : t -> int -> Uchar.t -> int

set_utf_16le_uchar b i u кодирует UTF-16LE символ u по индексу i в b и возвращает количество записанных байт n, начиная с i. Если n равно 0, то не хватило места для кодирования u в i, и b остались неизмененными. В противном случае новый символ может быть закодирован в i + n.

val is_valid_utf_16le : t -> bool

is_valid_utf_16le b является true, если и только если b содержит валидные данные UTF-16LE.

Бинарное кодирование/декодирование целых чисел

Функции в этом разделе кодируют и декодируют целые числа в и из последовательностей байтов в бинарном формате.

Все следующие функции генерируют исключение Invalid_argument, если необходимого места по индексу i для декодирования или кодирования целого числа недостаточно.

Маленький-эндиан (соответственно большой-эндиан) кодирование означает, что наименее (соответственно наиболее) значащие байты хранятся первыми. Большой-эндиан также известен как сетевой порядок байтов. Кодирование по порядку байтов процессора — это либо маленький-эндиан, либо большой-эндиан в зависимости от Sys.big_endian.

32-битные и 64-битные целые числа представлены типами int32 и int64, которые могут интерпретироваться как знаковые или беззнаковые числа.

8-битные и 16-битные целые числа представлены типом int, который имеет больше битов, чем двоичное кодирование. Эти дополнительные биты обрабатываются следующим образом:

  • Функции, декодирующие знаковое (соответственно беззнаковое) 8-битное или 16-битное целое число, представленное значениями int, расширяют результат со знаком (соответственно без расширения) до нуля.
  • Функции, кодирующие 8-битное или 16-битное целое число, представленное значениями int, усекают входное значение до его наименее значащих байтов.
val get_uint8 : bytes -> int -> int

get_uint8 b i — беззнаковое 8-битное целое число b, начиная с байтового индекса i.

  • Since 4.08
val get_int8 : bytes -> int -> int

get_int8 b i — подписанное 8-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_uint16_ne : bytes -> int -> int

get_uint16_ne b i — собственный порядок байтов беззнаковое 16-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_uint16_be : bytes -> int -> int

get_uint16_be b i — порядок байтов big-endian беззнаковое 16-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_uint16_le : bytes -> int -> int

get_uint16_le b i — порядок байтов little-endian беззнаковое 16-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_int16_ne : bytes -> int -> int

get_int16_ne b i — собственный порядок байтов знаковое 16-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_int16_be : bytes -> int -> int

get_int16_be b i — порядок байтов big-endian знаковое 16-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_int16_le : bytes -> int -> int

get_int16_le b i — порядок байтов little-endian знаковое 16-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_int32_ne : bytes -> int -> int32

get_int32_ne b i — собственный порядок байтов 32-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_int32_be : bytes -> int -> int32

get_int32_be b i — порядок байтов big-endian 32-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_int32_le : bytes -> int -> int32

get_int32_le b i — порядок байтов little-endian 32-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_int64_ne : bytes -> int -> int64

get_int64_ne b i — собственный порядок байтов 64-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_int64_be : bytes -> int -> int64

get_int64_be b i — порядок байтов big-endian 64-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val get_int64_le : bytes -> int -> int64

get_int64_le b i — порядок байтов little-endian 64-битное целое число объекта b, начинающееся с байтового индекса i.

  • Since 4.08
val set_uint8 : bytes -> int -> int -> unit

set_uint8 b i v устанавливает беззнаковое 8-битное целое число объекта b, начиная с байтового индекса i на значение v.

  • Since 4.08
val set_int8 : bytes -> int -> int -> unit

Устанавливает знаковое целое 8-битное число объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_uint16_ne : bytes -> int -> int -> unit

Устанавливает беззнаковое целое 16-битное число в формате системы счисления по умолчанию объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_uint16_be : bytes -> int -> int -> unit

Устанавливает беззнаковое целое 16-битное число в формате big-endian объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_uint16_le : bytes -> int -> int -> unit

Устанавливает беззнаковое целое 16-битное число в формате little-endian объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_int16_ne : bytes -> int -> int -> unit

Устанавливает знаковое целое 16-битное число в формате системы счисления по умолчанию объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_int16_be : bytes -> int -> int -> unit

Устанавливает знаковое целое 16-битное число в формате big-endian объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_int16_le : bytes -> int -> int -> unit

Устанавливает знаковое целое 16-битное число в формате little-endian объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_int32_ne : bytes -> int -> int32 -> unit

Устанавливает целое 32-битное число в формате системы счисления по умолчанию объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_int32_be : bytes -> int -> int32 -> unit

Устанавливает целое 32-битное число в формате big-endian объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_int32_le : bytes -> int -> int32 -> unit

Устанавливает целое 32-битное число в формате little-endian объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_int64_ne : bytes -> int -> int64 -> unit

Устанавливает целое 64-битное число в формате системы счисления по умолчанию объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_int64_be : bytes -> int -> int64 -> unit

Устанавливает целое 64-битное число в формате big-endian объекта b начиная с байтового индекса i в значение v.

  • Since 4.08
val set_int64_le : bytes -> int -> int64 -> unit

Устанавливает целое 64-битное число в формате little-endian объекта b начиная с байтового индекса i в значение v.

  • Since 4.08

© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/libref/StdLabels.Bytes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API