Unicode と ASCII の値
MATLAB® は、あらゆる文字が数値コード値によって表される UTF-16 エンコードを使用して、すべての文字を Unicode® 文字として保存します(Unicode には最初の 128 個の記号として ASCII 文字セットが組み込まれているため、ASCII 文字は Unicode と ASCII で同じ数値コードをもちます)。文字配列と string 配列の両方でこのエンコードが使用されます。さまざまな数値変換関数を使用することにより、文字をその数値コード値に変換できます。関数 char
を使用すると、数値を文字に変換できます。
文字の数値コード値への変換
文字を、その Unicode コード値を表す整数に変換できます。単一の文字または文字配列を変換するには、次のいずれかの関数を使用します。
double
uint16
、uint32
またはuint64
ベスト プラクティスは、関数 double
を使用することです。ただし、数値を整数として保存する必要がある場合は、少なくとも 16 ビットをもつ符号なし整数を使用します。これは、MATLAB が UTF-16 エンコードを使用するからです。
関数 double
を使用して、文字ベクトルを Unicode コード値に変換します。
C = 'MATLAB'
C = 'MATLAB'
unicodeValues = double(C)
unicodeValues = 1×6
77 65 84 76 65 66
string 配列内の文字を Unicode コード値に直接変換することはできません。特に、関数 double
は、関数 str2double
と同様に、string をそれが表す数値に変換します。double
は、string を数値に変換できない場合、NaN
値を返します。
str = "MATLAB";
double(str)
ans = NaN
string 内の文字を変換するには、まず string を文字ベクトルに変換するか、中かっこを使用して文字を抽出します。次に、double
のような関数を使用して文字を変換します。
C = char(str); unicodeValues = double(C)
unicodeValues = 1×6
77 65 84 76 65 66
数値コード値の文字への変換
関数 char
を使用すると、Unicode 値を文字に変換できます。
D = [77 65 84 76 65 66]
D = 1×6
77 65 84 76 65 66
C = char(D)
C = 'MATLAB'
char
の典型的な用途は、入力できない文字を作成して string に追加することです。たとえば、度記号の文字を作成し、それを string に追加します。度記号の Unicode コード値は 176 です。
deg = char(176)
deg = '°'
myLabel = append("Current temperature is 21",deg,"C")
myLabel = "Current temperature is 21°C"
文字とコード値の間のマッピングを含む Unicode の詳細については、Unicode を参照してください。
参考
char
| double
| single
| string
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64