1
我需要解压缩打包的ASCII字符的字符串。算法如下:在ruby中更加优雅的打包ASCII算法的实现
- 获取3个打包的ASCII字节,将它们放入4个ASCII字节。 (3字节至4字节中的6 + 6 + 6 + 6位)
- 对于每个字节,将位6设置为位5的补码。
- 对于每个字节将位7复位为零。
- 对下3个打包字节重复。
我是新来的Ruby,可能是有解决这个任务更正确,更优雅的方式,而我的代码:
while i < pstr.length
parr = [pstr[0] & 0x3F, pstr[0]>>6 | ((pstr[1] << 2) & 0x3F),
pstr[1]>>4 | ((pstr[2] << 4) & 0x3F),
pstr[2]>>2]
parr.collect! { |a| a | (~(a << 1) & 0x20) }
parr.collect! { |a| a & 0x7F }
puts parr
i += 3
end
UPDATE1:THX用于收集校正。
只是为了澄清:您的代码按预期工作(例如通过测试),但您希望获得有关Ruby成语或快捷方式的帮助?你可以添加一些测试输入和验证输出到问题,这将有所帮助。 –
你看过'#unpack'吗? http://www.ruby-doc.org/core-2.1.1/String.html#method-i-unpack –
@UriAgassi当我在文档中阅读时,Ruby不支持打包/解压缩打包的ASCII码。 – Darkkey