为什么要表达:
test = cast(strtrim('3'), 'uint8')
生产 51?
这也适用于:
test = cast(strtrim('3'), 'int8')
谢谢。
因为 51 是字符的ASCII码'3'
。
如果要将字符串转换为数字 3,则应使用
uint8(str2double('3'))
请注意,这str2double
将忽略尾随空格,因此strtrim
没有必要。
编辑
在数值运算中使用字符串时,Matlab 会自动将其转换为其 ASCII 值。例如
>> '1'+1
ans =
50
因为 51 是字符的ASCII值'3'
。
这是因为 '3' 在 matlab 中被视为 ASCII 字符。通过转换为有符号或无符号整数(在这种情况下为 8 位),您要求 Matlab 将 ASCII '3' 转换为十进制数。在这种情况下,十进制数是 51。如果您想查看更多转换,这里是一个基本文档。