在Ruby中将一个由0-F组成的字符串转换为字节数组

18

我正在尝试解密一个由另一个使用BouncyCastle库的Java程序加密的数字。

在Java中,我可以这样设置密钥:key = Hex.decode("5F3B603AFCE22359");

我正在尝试找出如何用Ruby表示相同的步骤。

2个回答

40

.to_a” 是不是多余的? 如果有人关心处理大字符串(10M十六进制数字)的性能:str.scan(/../).map(&:hex):1.061567秒,[str].pack('H*').unpack('C*'):0.175744秒,[str].pack('H*').bytes.to_a:0.149195秒。 - Cadoiz

3

对于一个字符串str

"".tap {|binary| str.scan(/../) {|hn| binary << hn.to_i(16).chr}}

1
不错!这是一种风格问题,但我个人会重新表述为:str.scan(/../).inject(""){|binary,hn| binary << hn.to_i(16).chr} - Brandon Yarbrough
注意:str.scan(/../)执行效率较差。 对于1到16字节的'普通'数字可能不相关 - Cadoiz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接