그룹화 된 16 진 문자를 Perl의 비트 스트링으로 변환합니다
-
21-08-2019 - |
문제
나는 비트 깃발 시퀀스를 나타내는 256 자 문자열의 16 진 문자를 가지고 있으며, 그것들을 다시 비트 스트링으로 변환하려고 노력하여 조작 할 수 있습니다. &
, |
, vec
그리고 같은. Hex Strings는 8 바이트 그룹이 "76543210"
비트 스트링으로 번역해야합니다 "\x10\x32\x54\x76"
, 즉 8 비트가 가장 낮습니다 00001000
.
문제는 그 것입니다 pack
"S"h
"형식은 8 개가 아닌 한 번에 1 바이트의 입력에서 작동하므로 직접 사용한 결과는 올바른 순서가 아닙니다. 현재로서는 다음과 같습니다.
my $bits = pack("h*", join("", map { scalar reverse $_ } unpack("(A8)*", $hex)));
작동하지만 해킹감을 느낍니다. 더 깨끗한 방법이 있어야하는 것처럼 보이지만 내 pack
-fu는 그리 강하지 않습니다. 이 번역을하는 더 좋은 방법이 있습니까?
해결책
my $hex = "7654321076543210"; # can be as long as needed
my $bits = pack("V*", unpack("N*", pack("H*", $hex)));
print unpack("H*", $bits); #: 1032547610325476
다른 팁
우수한 사용을 고려하십시오 비트 :: 벡터.
제휴하지 않습니다 StackOverflow