新手问题 字符串按字节输出 16 进制怎么样格式化,,比如回车就显示 0A 而不是 a

yakczh · 2012年12月01日 · 最后由 yakczh 回复于 2012年12月03日 · 4616 次阅读
str.each_byte do |byte|
   puts byte.to_s(16)
end 

用 "%02X"

str.each_byte{|byte| puts  "%02X" % byte}

str.each_byte{|byte| printf "%02X\n", byte}

这样也可以

printf("%02X \n" ,  byte)

不用一个个字节的搞,unpack 就可以了

str.unpack 'H*'

这个没办法两位一组那样清晰的显示,调试不方便

比如这种格式

20 20 76 61 72 20 6E 65-74 20 3D 20 72 65 71 75
69 72 65 28 22 6E 65 74-22 29 3B 20 0A 20 20 20
20 76 61 72 20 20 73 74-61 74 65 3D 30 3B 0A 76
61 72 20 72 65 73 70 3D-27 48 54 54 50 2F 31 2E
31 20 32 30 30 20 4F 4B-5C 72 5C 6E 43 6F 6E 74
需要 登录 后方可回复, 如果你还没有账号请 注册新账号