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