我有一个字符,每一行都有一串小数,从0到63。我正在尝试将这些小数转换为下图中表示它的小数。因此,0应更改为A,1应更改为B,依此类推。有人知道在MatLab中有没有一些函数可以让这件事变得更容易?
0
A
1
B
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
jtoj6r0c2#
我想知道您的问题是否缺少上下文,因为它看起来很像base64 encoding。如果是这样的话,为了正确地实现这一点,三个字节(24位)的组由四个6位Base64密钥值编码。例如,uint8(0:2)等三个8位值以二进制形式表示为000000000000000100000010。然后可以将这些值拆分为四个6位值,000000000000000100000010,根据您的表,结果是'AAEC'。幸运的是,MatLab内置了使用matlab.net.base64encode和matlab.net.base64decode对Base64进行编码/解码的函数。其中包括在输入字节数不能被三整除的情况下使用'='填充。我上面的例子可以用以下命令来复制:
uint8(0:2)
00000000
00000001
00000010
000000
000100
000010
'AAEC'
matlab.net.base64encode
matlab.net.base64decode
'='
V = uint8(0:2); res = matlab.net.base64encode(V) matlab.net.base64decode(res) % convert result back
2条答案
按热度按时间xpcnnkqh1#
例如,以此字符字符串开头:
然后您可以使用它在数字和字符之间来回Map,将索引偏移1。例如,
jtoj6r0c2#
我想知道您的问题是否缺少上下文,因为它看起来很像base64 encoding。如果是这样的话,为了正确地实现这一点,三个字节(24位)的组由四个6位Base64密钥值编码。例如,
uint8(0:2)
等三个8位值以二进制形式表示为00000000
00000001
00000010
。然后可以将这些值拆分为四个6位值,000000
000000
000100
000010
,根据您的表,结果是'AAEC'
。幸运的是,MatLab内置了使用
matlab.net.base64encode
和matlab.net.base64decode
对Base64进行编码/解码的函数。其中包括在输入字节数不能被三整除的情况下使用'='
填充。我上面的例子可以用以下命令来复制: