为什么表达:变换串/焦炭到UINT8
test = cast(strtrim('3'), 'uint8')
产生51?
这也适用于:
test = cast(strtrim('3'), 'int8')
感谢。
为什么表达:变换串/焦炭到UINT8
test = cast(strtrim('3'), 'uint8')
产生51?
这也适用于:
test = cast(strtrim('3'), 'int8')
感谢。
因为51是字符'3'
的ASCII code。
如果你想将字符串转换为数字3,你应该使用
uint8(str2double('3'))
注意str2double
会忽略尾随空格,使strtrim
是没有必要的。
EDIT
当字符串是在数字运算中使用,MATLAB自动将其转换到其ASCII值。例如
>> '1'+1
ans =
50
您可以使用最后一个属性轻松地将字符串数字转换为数字:'strnumbers ='1234567890';''strnumbers-'0''返回数组''1 2 3 4 5 6 7 8 9 0]' –
但必须要小心,因为'0'-0'返回48. – Jonas
你是不是指'0 -'0''返回-48?确实如此,但也适用于任何函数,例如:'str2double(0)返回'NaN'这是开发人员/程序员做出正确的实现并在必要时捕获不正确的输入。 –
因为51是字符'3'
的ASCII value。
这是因为'3'被看作是matlab的ASCII字符。通过将一个有符号或无符号整数(在这种情况下是8位)进行转换,您要求Matlab将ASCII'3'转换为十进制数。在这种情况下,十进制数字是51.如果你想看更多的转换here是一个基本的文件。
因为51是'3'的ASCII值? –
够公平的。有道理。谢谢。 – cs0815