我需要使用ruby将转义字符打印到二进制文件中。主要的问题是斜杠需要整个字节才能正确转义,我不知道/不能这样创建字节。
我正在创建十六进制值,基本上是:

'\x' + char

其中char是一些“hex”值,例如65。十六进制中,\x65是ascii字符“e”。
不幸的是,当我把这个序列放到文件中时,我得到的结果是:
\\x65

如何使用正确转义的值创建十六进制字符串?我试过很多东西,包括单引号或双引号、pack、unpack、多斜杠等等。我试过很多不同的组合,感觉好像我现在比开始时更不了解这个问题。
怎么用?

最佳答案

好吧,如果你想创建一个第一个字节的字符串
具有整数值0x65,使用Array#pack

irb> [0x65].pack('U')
#=> "e"
irb> "e"[0]
#=> 101

10110=6516,这样就行了。
如果要创建第一个字节为“\”的文本字符串,
第二个是“x”,第三个是“6”,第四个是“5”,然后使用插值:
irb> "\\x#{65}"
#=> "\\x65"
irb> "\\x65".split('')
#=> ["\\", "x", "6", "5"]

10-08 09:40