5.6 Преобразования строк
Octave поддерживает различные виды преобразований между строками и числами. Например, можно преобразовать строку, содержащую шестнадцатеричное число, в число с плавающей точкой.
hex2dec ("FF")
⇒ 255 - bin2dec (s)
-
Возвращает десятичное число, соответствующее двоичному числу, представленному строкой s.
Например:
bin2dec ("1110") ⇒ 14Пробелы игнорируются во время преобразования и могут использоваться для улучшения читаемости двоичного числа.
bin2dec ("1000 0001") ⇒ 129Если s — матрица строк, возвращает столбец векторов с одним преобразованным числом на строку s; неверные строки оцениваются как NaN.
Если s — ячейковый массив строк, возвращает столбец векторов с одним преобразованным числом на элемент ячейки в s.
- dec2bin (d, len)
-
Возвращает двоичное число, соответствующее неотрицательному целому числу d, как строку из единиц и нулей.
Например:
dec2bin (14) ⇒ "1110"Если d — матрица или ячейковый массив, возвращает матрицу строк с одной строкой на каждый элемент в d, дополненную ведущими нулями до ширины наибольшего значения.
Необязательный второй аргумент len задаёт минимальное количество цифр в результате.
- dec2hex (d, len)
-
Возвращает шестнадцатеричную строку, соответствующую неотрицательному целому числу d.
Например:
dec2hex (2748) ⇒ "ABC"Если d — матрица или ячейковый массив, возвращает матрицу строк с одной строкой на каждый элемент в d, дополненную ведущими нулями до ширины наибольшего значения.
Необязательный второй аргумент len задаёт минимальное количество цифр в результате.
- hex2dec (s)
-
Возвращает целое число, соответствующее шестнадцатеричному числу, представленному строкой s.
Например:
hex2dec ("12B") ⇒ 299 hex2dec ("12b") ⇒ 299Если s — матрица строк, возвращает столбец векторов с одним преобразованным числом на строку s; неверные строки оцениваются как NaN.
Если s — ячейковый массив строк, возвращает столбец векторов с одним преобразованным числом на элемент ячейки в s.
- dec2base (d, base)
- dec2base (d, base, len)
-
Возвращает строку символов в системе счисления base, соответствующую неотрицательному целому числу d.
dec2base (123, 3) ⇒ "11120"
Если d — матрица или ячейковый массив, возвращает матрицу строк с одной строкой на каждый элемент в d, дополненную ведущими нулями до ширины наибольшего значения.
Если base — строка, то символы из base используются в качестве символов для цифр d. Пробел (’ ’) не может использоваться как символ.
dec2base (123, "aei") ⇒ "eeeia"
Необязательный третий аргумент len задаёт минимальное количество цифр в результате.
- base2dec (s, base)
-
Преобразует s из строки цифр в системе счисления base в десятичное целое число (основание 10).
base2dec ("11120", 3) ⇒ 123Если s — матрица строк, возвращает столбец векторов с одним значением на строку s. Если строка содержит недопустимые символы, соответствующее значение будет NaN.
Если s — ячейковый массив строк, возвращает столбец векторов с одним значением на элемент ячейки в s.
Если base — строка, символы из base используются в качестве символов для цифр s. Пробел (’ ’) не может использоваться как символ.
base2dec ("yyyzx", "xyz") ⇒ 123
- s = num2hex (n)
- s = num2hex (n, "cell")
-
Преобразует числовой массив в массив шестнадцатеричных строк.
Например:
num2hex ([-1, 1, e, Inf]) ⇒ "bff0000000000000 3ff0000000000000 4005bf0a8b145769 7ff0000000000000"Если аргумент n — число с одинарной точностью или вектор, возвращаемая строка имеет длину 8. Например:
num2hex (single ([-1, 1, e, Inf])) ⇒ "bf800000 3f800000 402df854 7f800000"С необязательным вторым аргументом
"cell", возвращается ячейковый массив строк вместо символьного массива.
- n = hex2num (s)
- n = hex2num (s, class)
-
Преобразует шестнадцатеричный символьный массив или ячейковый массив строк в массив чисел.
По умолчанию входной массив интерпретируется как шестнадцатеричное число, представляющее значение двойной точности. Если предоставлено менее 16 символов, строки дополняются справа символами
'0'.При задании матрицы строк
hex2numкаждая строка обрабатывается как отдельное число.hex2num (["4005bf0a8b145769"; "4024000000000000"]) ⇒ [2.7183; 10.000]
Необязательный второй аргумент class может быть использован для интерпретации входного массива как значения другого типа. Возможные значения:
Опция Символы "int8"2 "uint8"2 "int16"4 "uint16"4 "int32"8 "uint32"8 "int64"16 "uint64"16 "char"2 "single"8 "double"16 Например:
hex2num (["402df854"; "41200000"], "single") ⇒ [2.7183; 10.000]
- str2double (s)
-
Преобразует строку в вещественное или комплексное число.
Строка должна быть в одном из следующих форматов, где a и b — вещественные числа, а комплексная единица —
'i'или'j':- a + bi
- a + b*i
- a + i*b
- bi + a
- b*i + a
- i*b + a
Если присутствуют, a и/или b имеют вид [+-]d[,.]d[[eE][+-]d], где скобки указывают на необязательные аргументы, а
'd'означает ноль или более цифр. Также принимаются специальные входные значенияInf,NaN, иNA.s может быть символьной строкой, символьной матрицей или ячейковым массивом. Для символьных массивов преобразование повторяется для каждой строки, и возвращается массив с плавающей точкой или комплексный массив. Пустые строки в s удаляются и не возвращаются в числовом массиве. Для ячейковых массивов каждый элемент символьной строки обрабатывается, и возвращается массив с плавающей точкой или комплексный массив тех же размеров, что и s.
Для неконвертируемого скалярного или символьного входного значения
str2doubleвозвращается NaN. Аналогично, для входного массива символовstr2doubleвозвращает NaN для любой строки s, которую невозможно преобразовать. Для ячейкового массиваstr2doubleвозвращает NaN для любого элемента s, для которого преобразование завершается неудачей. Обратите внимание, что числовые элементы в смешанном строковом/числовом ячейковом массиве не являются строками, и преобразование завершится неудачей для этих элементов и вернёт NaN.str2doubleможет заменитьstr2num, и это предотвращает риск безопасности при использованииevalс неизвестными данными.См. также: str2num.
- strjust (s)
- strjust (s, pos)
-
Возвращает текст s, выровненный по pos, который может быть
"left","center", или"right".Если pos опущен, он по умолчанию равен
"right".Символы NULL заменяются пробелами. Все другие символьные данные рассматриваются как не-пробельные.
Пример:
strjust (["a"; "ab"; "abc"; "abcd"]) ⇒ " a" " ab" " abc" "abcd"
- x = str2num (s)
- [x, state] = str2num (s)
-
Преобразует строку (или символьный массив) s в число (или массив).
Примеры:
str2num ("3.141596") ⇒ 3.141596 str2num (["1, 2, 3"; "4, 5, 6"]) ⇒ 1 2 3 4 5 6Необязательный второй вывод state логически истинный, когда преобразование выполняется успешно. Если преобразование завершается неудачей, числовой вывод x пуст, а state — ложно.
Внимание: Поскольку
str2numиспользует функциюevalдля преобразования,str2numвыполнит любой код, содержащийся в строке s. Используйтеstr2doubleдля более безопасного и быстрого преобразования.Для ячейкового массива строк используйте
str2double.См. также: str2double, eval.
- tolower (s)
- lower (s)
-
Возвращает копию строки или ячейки строки s, в которой каждый символ верхнего регистра заменён соответствующим символом нижнего регистра; не-буквенные символы остаются неизменными.
Например:
tolower ("MiXeD cAsE 123") ⇒ "mixed case 123"См. также: toupper.
- toupper (s)
- upper (s)
-
Возвращает копию строки или ячейки строки s, в которой каждый символ нижнего регистра заменён соответствующим символом верхнего регистра; не-буквенные символы остаются неизменными.
Например:
toupper ("MiXeD cAsE 123") ⇒ "MIXED CASE 123"См. также: tolower.
- native_bytes = unicode2native (utf8_str, codepage)
- native_bytes = unicode2native (utf8_str)
-
Преобразовать строку UTF-8 utf8_str в последовательность байтов, используя codepage.
Вектор символов utf8_str преобразуется в последовательность байтов native_bytes с использованием кодовой страницы, заданной codepage. Строка codepage должна быть идентификатором допустимой кодовой страницы. Примеры допустимых кодовых страниц:
"ISO-8859-1","Shift-JIS", или"UTF-16". Список поддерживаемых кодовых страниц см. на https://www.gnu.org/software/libiconv. Если codepage опущена или пуста, используется системная кодовая страница по умолчанию.Если какой-либо символ не может быть отображён в кодовой странице codepage, он заменяется соответствующей последовательностью подстановки для этой кодовой страницы.
См. также: native2unicode.
- utf8_str = native2unicode (native_bytes, codepage)
- utf8_str = native2unicode (native_bytes)
-
Преобразовать последовательность байтов native_bytes в UTF-8, используя codepage.
Числа в векторе native_bytes округляются и обрезаются до целых чисел от 0 до 255. Затем эта последовательность байтов отображается в кодовой странице, заданной строкой codepage, и возвращается в строке utf8_str. Octave использует UTF-8 в качестве внутренней кодировки. Строка codepage должна быть идентификатором допустимой кодовой страницы. Примеры допустимых кодовых страниц:
"ISO-8859-1","Shift-JIS", или"UTF-16". Список поддерживаемых кодовых страниц см. на https://www.gnu.org/software/libiconv. Если codepage опущена или пуста, используется системная кодовая страница по умолчанию.Если native_bytes является вектором строк, он возвращается как есть.
См. также: unicode2native.
- do_string_escapes (string)
-
Преобразовать последовательности экранирования в строке string в соответствующие им символы.
Последовательности экранирования начинаются с ведущего обратного слэша (
'\') и следуют 1–3 символами (например,"\n"=> перевод строки).См. также: undo_string_escapes.
- undo_string_escapes (s)
-
Преобразовать специальные символы в строках обратно в их экранированные формы.
Например, выражение
bell = "\a";
присваивает значение символа тревоги (контроль-g, код ASCII 7) переменной строки
bell. Если эта строка будет напечатана, система прозвонит звуковой сигнал терминала (если это возможно). Это обычно желаемый результат. Однако иногда полезно иметь возможность вывести исходное представление строки, заменив специальные символы своими последовательностями экранирования. Например,octave:13> undo_string_escapes (bell) ans = \a
заменяет непечатаемый символ тревоги его печатаемым представлением.
См. также: do_string_escapes.
© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/String-Conversions.html