如何在MatLab中将小数转换为这些ASCII字符?

laik7k3q  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(347)

我有一个字符,每一行都有一串小数,从0到63。我正在尝试将这些小数转换为下图中表示它的小数。因此,0应更改为A1应更改为B,依此类推。有人知道在MatLab中有没有一些函数可以让这件事变得更容易?

xpcnnkqh

xpcnnkqh1#

例如,以此字符字符串开头:

S = ['A':'Z','a':'z','0':'9','+','/']

然后您可以使用它在数字和字符之间来回Map,将索引偏移1。例如,

c = 'THEstring'
[~,N] = ismember(c,S); % From char string to numbers
x = N-1 % Offset by 1
C = S(x+1) % From numbers back to char string, offset by 1
jtoj6r0c

jtoj6r0c2#

我想知道您的问题是否缺少上下文,因为它看起来很像base64 encoding。如果是这样的话,为了正确地实现这一点,三个字节(24位)的组由四个6位Base64密钥值编码。例如,uint8(0:2)等三个8位值以二进制形式表示为000000000000000100000010。然后可以将这些值拆分为四个6位值,000000000000000100000010,根据您的表,结果是'AAEC'
幸运的是,MatLab内置了使用matlab.net.base64encodematlab.net.base64decode对Base64进行编码/解码的函数。其中包括在输入字节数不能被三整除的情况下使用'='填充。我上面的例子可以用以下命令来复制:

V = uint8(0:2);
res = matlab.net.base64encode(V)
matlab.net.base64decode(res) % convert result back

相关问题