gpt4 book ai didi

Matlab : String vector - character subtraction

转载 作者:行者123 更新时间:2023-12-02 17:41:30 25 4
gpt4 key购买 nike

我正在尝试为 shift(Ceasar) 密码学 cipher 制作一个基于线性代数的算法。假设我有一个字符串:'hello'。当我尝试将其转换为 (int)number 矩阵时,我会这样做:

'hello' - 'a'

结果是

ans =

7 4 11 11 14

这是期望的结果。但如果我减去字符 'g',结果将是

ans =

1 -2 5 5 8

我想问一下当我减去一个字符并得到上面的结果时,在 Matlab(或 Octave)中会发生什么。

最佳答案

正如 Mohit Jain 所写,您获得的结果基于对 ASCII 的转换这是对文本信息进行数字编码的最广泛接受的方式。 ASCII 也作为子集包含在当前标准 Unicode 中, 而在支持平台上,Matlab 实际上使用了 16 位的 Unicode 编码,这使得它不仅可以表示支持英文文本的 ASCII 的 95 个可打印字符,还可以表示大量的国际文字,数学,排版和应用中的特殊字符many other fields . Matlab中数字和字符数据的显式转换是通过chardouble实现的:

>> double('aAΔ')
ans =
97 65 916

一个小的拉丁字母“a”的 ASCII 码是 97,一个大的拉丁字母“A”的 ASCII 码是 65,一个大的希腊字母 Delta 的 Unicode 码是 916。由于拉丁字母是按代码顺序编码的小写字母为 97 到 122,大写字母为 65 到 90,您可以生成英文字母表,例如像这样:

>> char(65 : 90)
ans =
ABCDEFGHIJKLMNOPQRSTUVWXYZ

当您将 - 等算术运算符应用于字符串时,字符将隐式转换为数字,就好像您使用了 double

>> double('hello')
ans =
104 101 108 108 111
>> double('g')
ans =
103

因此 'hello' - 'a'

相同
>> [104 101 108 108 111] - 103
ans =
1 -2 5 5 8

关于Matlab : String vector - character subtraction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com