/ / zamień 128 bajtów na inną kolejność - przetwarzanie tekstu, perl

zamień 128 bajtów hex na inne zamówienie - przetwarzanie tekstu, perl

Mam tę pracę perl może obsłużyć 4 liczby szesnastkowe, aby zamienić się na kolejne 4 heksy

perl -wMstrict -le "
my @bits = unpack "(A1)16", sprintf "%016b", hex shift;
my $bitmap = "D5679123C4EF80AB";

@bits = @bits[ map { hex } split //, $bitmap ];
$"="";

print sprintf "%04X", oct "0b@bits";
" "B455"

Wynik: CB15

proszę jak można obsługiwać więcej bajtów, takich jak 128 bajtów?

i jak użyć tego perla, aby odczytać heks z pliku.txt?

z góry dziękuję.

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz wypróbować następujące rzeczy:

use feature qw(say);
use strict;
use warnings;

# Example with 64 bits
my $data = "B455AB10A1230000"; # original data (64 bits)
my @bits = map { unpack "(A)*", sprintf "%08b", hex } unpack "(A2)*", $data;
my @bitmap = reverse 0..63;  # some 64 bits map, replace with your actual data

my $result = unpack "H*", pack "C*", map { oct "0b$_" } unpack "(A8)*", join "", @bits[@bitmap];

say "Input : $data";
say "Result: $result";

Wydajność:

Input : B455AB10A1230000
Result: 0000c48508d5aa2d