Breaking unpack("H*", "\x{DF}") # df is not an option, so you're suggesting that unpack("H*", "\x{DF}").unpack("H*", "\x{100}") gives something different than unpack("H*", "\x{DF}\x{100}") That simply makes no sense.