asciimat
Преобразует массив текста в коды ASCII/UTF8 и обратно
Синтаксис
unicodes = asciimat(text) text = asciimat(unicodes)
Аргументы
- text
- отдельный текст, или вектор, матрица или гиперматрица текстов.
Элементы текста могут иметь разную длину и могут включать в
себя расширенные символы UTF-8.
asciimat(…)всегда конкатенирует столбцы текстаtextвдоль строк, как входной или выходной аргумент. - unicodes
- отдельный целочисленный ASCII-код, вектор, матрица или гиперматрица 1-байтных чисел ASCII или юникода.
Описание
asciimat(…) преобразует массив текста text
в массив соответствующих 1-байтных кодов ascii или UTF-8 unicodes,
и наоборот.
asciimat(…) является функцией совместимости с Octave/Matlab,
с целью обеспечить в преобразователе кода Matlab-в-Scilab m2sci
эквивалентность для суммирования и вычитания некоторых
строковых символов или с числами. Таким образом,
>> ['ab' 'c' ; 'd' 'ef'] + 4 ans = 101 102 103 104 105 106 >> ['ab';'cd'] + ['ef';'gh'] ans = 198 200 202 204 >> ['ab';'cd'] - ['ef';'gh'] ans = -4 -4 -4 -4
может быть преобразовано преобразователем Matlab-в-Scilab с
asciimat(['ab' 'c' ; 'd' 'ef']) + 4 asciimat(['ab';'cd']) + asciimat(['ef';'gh']) asciimat(['ab';'cd']) - asciimat(['ef';'gh'])
![]() | asciimat(…) не следует использовать без преобразователя. |
unicodes = asciimat(text)
Для скаляра или строки text,
asciimat(text) эквивалентно ascii(text).
Все строчки склеиваются друг с другом перед построением вектора-строки
кодов их символов.
![]() | Для любого массива text любых
размеров, сделанных только из пустых строк "",
asciimat(text) возвращает [].
Действительно, asciimat(…) считает ""
как пустой вектор (индексированных) символов как в Octave/Matlab, а не
как текстовый объект Scilab. |
Для двумерных матриц text,
asciimat(text) строит уникальный столбец текста,
склеивая столбцы text вдоль строк.
Затем для каждой строки/строчки столбца вычисляется вектор-строка кодов ASCII или UTF-8 всех её символов.
Наконец, все результирующие вектор-строки кодов конкатенируются
по вертикали для построения матрицы unicodes.
Слишком короткие векторы кодов предварительно дополняются кодом
ascii(" ")==32.
Для гиперматрицы text,
обработка, в основном, та же самая, как если бы все строки
text по всем размерностям больше двух были предварительно
составлены в двумерную матрицу. Результирующая двумерная матрица
unicodes, наконец, преобразуется в гиперматрицу.
Размеры массивов unicodes и text
отличаются только по количеству их столбцов.
text = asciimat(unicodes)
Для скаляра или строки
unicodes,
asciimat(unicodes) эквивалентна
ascii(unicodes).
Она возвращает символьные строки, чьи символы имеют указанные коды.
![]() | Нули стоят для кода пустого символа "", поскольку
настоящий символ ascii(0) пока что не поддерживается
в Scilab 6. |
Для столбца, матрицы или гиперматрицы
unicodes, каждая строка unicodes
обрабатывается отдельно и строит отдельную символьную строку Scilab.
Все завершающие пробелы ascii(32) построенных
символьных строк отсекаются.
Наконец, text имеет размер unicodes,
за исключением size(text,2)==1.
Примеры
asciimat([]) asciimat("") asciimat(0) r = asciimat("A") asciimat(r) // Со СТРОКОЙ на входе: r = asciimat(["A" "BC"]) asciimat(r) r = asciimat(["A" "" "BC"]) // "" в строках игнорируются asciimat(r)
--> asciimat([])
ans =
[]
--> asciimat("")
ans =
[]
--> asciimat(0)
ans =
""
--> r = asciimat("A")
r =
65.
--> asciimat(r)
ans =
"A"
--> // With an input ROW:
--> r = asciimat(["A" "BC"])
r =
65. 66. 67.
--> asciimat(r)
ans =
"ABC"
--> r = asciimat(["A" "" "BC"]) // "" in rows are ignored
r =
65. 66. 67.
--> asciimat(r)
ans =
"ABC"
Со столбцом на входе:
asciimat(["" ; ""]) asciimat((97:110)')' strsplit("a":"n")' r = asciimat(["ABC" ; "" ; "D"]) // Дополнение коротких строк с помощью 32 asciimat(r) r = asciimat(["AB" ; "αβ"]) // используется 1-байтный код UTF-8 asciimat(r) // завершающие пробелы ascii(32) отсекаются
--> asciimat(["" ; ""])
ans =
[]
--> asciimat((97:110)')'
ans =
"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
--> strsplit("a":"n")'
ans =
"a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n"
--> r = asciimat(["ABC" ; "" ; "D"]) // Padding short rows with 32
r =
65. 66. 67.
32. 32. 32.
68. 32. 32.
--> asciimat(r)
ans =
"ABC"
""
"D"
--> r = asciimat(["AB" ; "αβ"]) // 1-byte UTF-8 coding is used
r =
65. 66. 32. 32.
206. 177. 206. 178.
--> asciimat(r) // Trailing ascii(32) spaces are trimmed
ans =
"AB"
"αβ"
С двумерной матрицей на входе:
r = asciimat([" AB", " ", "CD " ; "α", "βγ", " "]) asciimat(r)
--> r = asciimat([" AB", " ", "CD " ; "α", "βγ", " "]) r = 32. 65. 66. 32. 67. 68. 32. 206. 177. 206. 178. 206. 179. 32. --> asciimat(r) ans = " AB CD" "αβγ"
С трёхмерной гиперматрицей на входе:
x = ["a €" "bδ " ; "" "" ; "" "" ]; x2 = [" α" "βδc" ; "" "" ; "ε4" ""]; h = cat(3, x, x2) r = asciimat(h) asciimat(r)
--> h = cat(3, x, x2) h = (:,:,1) "a €" "bδ " "" "" "" "" (:,:,2) " α" "βδc" "" "" "ε4" "" --> r = asciimat(h) r = (:,:,1) 97. 32. 226. 130. 172. 98. 206. 180. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. (:,:,2) 32. 206. 177. 206. 178. 206. 180. 99. 32. 32. 32. 32. 32. 32. 32. 32. 32. 32. 206. 181. 52. 32. 32. 32. 32. 32. 32. --> asciimat(r) ans = (:,:,1) "a €bδ" "" "" (:,:,2) " αβδc" "" "ε4"
История
| Версия | Описание |
| 6.1.1 |
|
| Report an issue | ||
| << compatibility_functions | compatibility_functions | cellstr >> |
