我有一些 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不是很强。有没有更好的方法来做这个翻译?