解释在将字符串转换为整数时使用“str - '0'”。

时间:2012-08-22 11:54:36

标签: string matlab

我注意到转换字符串非常酷的方法,比如说

str = '1234'

到一个向量就是使用这个技巧。

vec = str - '0'
 = [1 2 3 4]

我的问题是为什么这种方法有效?

此外,例如:

vec1 = str -'1'
  = [0 1 2 3]

vec2 = str - '10'
  Error using  - 
  Matrix dimensions must agree.

这里发生了什么?

1 个答案:

答案 0 :(得分:5)

当你使用带有字符串的算术运算符时,Matlab会将字符串转换为双精度数,将字符串转换为ascii值:

>> double('1')
ans =
    49

因此,减法可以正常工作,但加法会产生奇怪的结果

>> '1'+'1'
ans =
    98

将字符串数组转换为double会产生双精度的数组,因此“矩阵尺寸必须一致”:

>> double('10')
ans =
    49    48

因此,虽然减去'0'因此是一个很酷的捷径,但我建议您使用STR2DOUBLE来避免混淆。