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' 转换为十进制数。在这种情况下,十进制数是 51。如果您想查看更多转换,这里是一个基本文档。

于 2012-07-02T14:42:39.393 回答