将string / char转换为uint8

时间:2012-07-02 14:37:54

标签: string matlab ascii

为什么表达式为:

test = cast(strtrim('3'), 'uint8')
产生51?

对于:

也是如此
test = cast(strtrim('3'), 'int8')

感谢。

3 个答案:

答案 0 :(得分:3)

因为51是字符'3'的{​​{3}}。

答案 1 :(得分:3)

因为51是字符'3'的{​​{3}}。

如果要将字符串转换为数字3,则应使用

uint8(str2double('3'))

请注意,str2double会忽略尾随空格,因此strtrim不是必需的。

修改

在数字运算中使用字符串时,Matlab会自动将其转换为ASCII值。例如

>> '1'+1
ans =
    50

答案 2 :(得分:1)

这是因为'3'被视为matlab的ASCII字符。通过转换为有符号或无符号整数(在本例中为8位),您要求Matlab将ASCII“3”转换为十进制数。在这种情况下,十进制数为51.如果您想查看更多转化,here是一个基本文档。