在Ruby中将整数字符串转换为字节数组

我有一个整数字符串“72101108108111”,但它是一个字符串,表示原始字符串“Hello”的字节。

如何在Ruby中将“72101108108111”转换为Ascii字符串“Hello”?

 s = '72101108108111' pattern=/^[a-zA-Z]/ index,res=0,'' while index 

试试这个,因为要解码的每个字符串的长度都不确定。

例如, "72->'H' , 101->'e' , 23->'\x17'"

所以每次我们发现解码的字符不是"a~z" or "A~Z" (ex:\x17)

我们只需添加长度并解析,直到找到我们想要的字符

对于这种情况,答案将正确"Hello"

在某些情况下可能会出现故障,但现在我的测试效果很好

看看吧

它仅适用于仅包含“AZ和az”的情况下的Exception

在评论中澄清您的问题(与标题无关):

我需要将字符串编码/解码为Base58

编辑:现在作为一个类(使用base58 gem):

 require 'base58' class Base58ForStrings def self.encode(str) Base58.encode(str.bytes.inject { |a, b| a * 256 + b }) end def self.decode(b58) b = [] d = Base58.decode(b58) while (d > 0) d, m = d.divmod(256) b.unshift(m) end b.pack('C*').force_encoding('UTF-8') end end Base58ForStrings.encode('Hello こんにちは') # => "5scGDXBpe3Vq7szFXzFcxHYovbD9c" Base58ForStrings.decode('5scGDXBpe3Vq7szFXzFcxHYovbD9c') # => "Hello こんにちは" 

适用于任何UTF-8字符串。