打印与特定十六进制值关联的ASCII字符

时间:2014-11-14 21:16:33

标签: ruby shell hex

我知道Perl我可以这样做:

bash$> perl -e 'print "\x48"x40;'
=> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

尝试在Ruby中执行此操作:

bash$> ruby -e "40.times{ print("0x48") }"
=> 72727272727272727272727272727272727272727272727272727272727272727272727272727272
....    
bash$> ruby -e "40.times{ print(48.to_s(16)) }"
=> 30303030303030303030303030303030303030303030303030303030303030303030303030303030
....
bash$> ruby -e "40.times{ print('48'.hex) }"
=> 72727272727272727272727272727272727272727272727272727272727272727272727272727272

如何使用-e选项在shell中使用Ruby来打印一些字符数,使用十六进制字符,例如\x48H

2 个答案:

答案 0 :(得分:3)

如果您尝试打印与特定十六进制值关联的ASCII字符,就像使用Perl一样:

40.times{ print "\x48" }
# >> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

print "\x48" * 40
# >> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

这意味着你可以这样做:

ruby -e 'print "\x48" * 40'
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

Ruby有很多Perlism。在这种情况下,与Perl相比,在Ruby中使用*更加一致,Perl的字符为x,数学为*

答案 1 :(得分:2)

您还可以使用以下内容:

ruby -e "print('48'.hex.chr)"