我有一些 256 个十六进制字符的字符串,它们代表一系列位标志,我正在尝试将它们转换回位字符串,以便我可以使用&
、|
等来操作它们vec
。十六进制字符串被写入整数范围的大端组,这样一组 8 个字节"76543210"
应该转换为 bitstring "\x10\x32\x54\x76"
,即最低 8 位是00001000
。
问题是pack
''h
格式一次只处理一个字节的输入,而不是 8 个字节,因此直接使用它的结果不会按正确的顺序排列。目前我正在这样做:
my $bits = pack("h*", join("", map { scalar reverse $_ } unpack("(A8)*", $hex)));
这有效,但感觉很hackish。好像应该有更干净的方法,但我的pack
-fu不是很强。有没有更好的方法来做这个翻译?