2

なぜ式は:

test = cast(strtrim('3'), 'uint8')

51を生成しますか?

これは、次の場合にも当てはまります。

test = cast(strtrim('3'), 'int8')

ありがとう。

4

3 に答える 3

4

51 は文字のASCII コード'3'であるためです。

文字列を数値 3 に変換する場合は、次を使用する必要があります。

uint8(str2double('3'))

str2doubleは末尾のスペースを無視するので、その必要はないことに注意してくださいstrtrim

編集

文字列が数値演算で使用されると、Matlab は自動的にそれを ASCII 値に変換します。例えば

>> '1'+1
ans =
    50
于 2012-07-02T14:40:36.050 に答える
3

51 は文字のASCII 値'3'であるためです。

于 2012-07-02T14:39:44.687 に答える
1

これは、「3」がmatlabのASCII文字と見なされるためです。符号付きまたは符号なし整数(この場合は8ビット)としてキャストすることにより、MatlabにASCII「3」を10進数に変換するように要求しています。この場合、10進数は51です。より多くの変換を確認したい場合は、ここに基本的なドキュメントがあります。

于 2012-07-02T14:42:39.393 に答える