如何在 Matlab 中循环字母表的 ascii 值
How to loop around the ascii values of the alphabet in Matlab
我是 Matlab 新手,在使用 mod
函数时遇到问题。
我得到了一个由小写字符组成的乱码向量和一个可以是正数或负数的移位值,我应该将其添加到向量中
我应该使用 mod 函数环绕字母表中的小写字母。
例如,如果字母是“a
”,如果移位量为 4,则字母将变为“e
”。
负数意味着向字母表中的“a
”移动。
Shift 应该围绕字母表移动“wrap
”-“x
”移动 7 应该成为'e
'.
我尝试使用 if 和 elseif
语句编写条件,但我应该使用 mod
函数而不是条件。
mod(x,y)
是x
除y
的余数,与y
同号。因此,给定负数 x
,符号仍然是正数。这与 mod
在其他语言中的定义不同。
我明明y
一定是a-z范围内的字符数。 x
是移位字符的从 0 开始的索引,对于“a”应为 0,对于“z”应为 y-1
。您可以通过简单地减去“a”的 ASCII 值来获得:
letter - 'a'
注意'a'
是一个char,在算术运算中隐式转换为字母的ASCII值
mod
运算的结果再returns一个这样的索引,你可以通过添加“a”的ASCII值将其变成一个字符:
char(index + 'a')
综合起来:
char(mod(letter-'a', 'z'-'a'+1) + 'a')
您可以在该表达式中使用字母向量(字符数组)代替 letter
。
我是 Matlab 新手,在使用 mod
函数时遇到问题。
我得到了一个由小写字符组成的乱码向量和一个可以是正数或负数的移位值,我应该将其添加到向量中
我应该使用 mod 函数环绕字母表中的小写字母。
例如,如果字母是“a
”,如果移位量为 4,则字母将变为“e
”。
负数意味着向字母表中的“a
”移动。
Shift 应该围绕字母表移动“wrap
”-“x
”移动 7 应该成为'e
'.
我尝试使用 if 和 elseif
语句编写条件,但我应该使用 mod
函数而不是条件。
mod(x,y)
是x
除y
的余数,与y
同号。因此,给定负数 x
,符号仍然是正数。这与 mod
在其他语言中的定义不同。
我明明y
一定是a-z范围内的字符数。 x
是移位字符的从 0 开始的索引,对于“a”应为 0,对于“z”应为 y-1
。您可以通过简单地减去“a”的 ASCII 值来获得:
letter - 'a'
注意'a'
是一个char,在算术运算中隐式转换为字母的ASCII值
mod
运算的结果再returns一个这样的索引,你可以通过添加“a”的ASCII值将其变成一个字符:
char(index + 'a')
综合起来:
char(mod(letter-'a', 'z'-'a'+1) + 'a')
您可以在该表达式中使用字母向量(字符数组)代替 letter
。