Ruby:翻转字符位

wun*_*tee 1 ruby binary

我只是试图翻转一个角色的位.我可以把它变成二进制形式,但是当用0xff测量数据时,似乎没有给我我想要的东西.

bin = "a".unpack("b*")[0].to_i # Will give me the binary value        (10000110)
flip = bin ^ 0xff              # this will give me 9999889, expecting (01111001)
Run Code Online (Sandbox Code Playgroud)

最后,我想把它重新打包为"角色"......

任何帮助,将不胜感激.

Cho*_*ett 6

你需要告诉Ruby解压缩的字符串是二进制的:

bin = "a".unpack("b*")[0].to_i(2) # => 134
flip = bin ^ 0xff # => 121
flip.to_s(2) # => "1111001"
[flip.to_s(2)].pack("b*") # => "O"
Run Code Online (Sandbox Code Playgroud)