Ho bisogno di estrarre alcuni bit di un byte e di nascondere i bit di estrazione a un valore esadecimale.Perl: come estrarre determinati bit da un byte e quindi coprire questi bit con un valore esadecimale?
Esempio (il valore del byte è 0xD2):
bit position
11010010 is 0xD2
- bit 0-3 definisce il canale quali è
0010b
è0x2
- bit 4-5 definisce il controllore che è
01b
è0x1
- Bit 6-7 definisce la porta che è
11b
è0x3
io in qualche modo bisogno di ottenere dal byte è 0xD2
al canale è 0x2
, controller è 0x1
, porta è 0x3
I Googled assegnare ed ha trovato le funzioni pack
/unpack
, vec
e sprintf
. Ma sto grattando a testa come usare le funzioni per raggiungere questo obiettivo. Qualche idea su come ottenere questo in Perl?
Sì, il formato iniziale è il valore esadecimale dal byte così nell'esempio sopra 0xD2 non quello che in precedenza indicato. –
Sono felice di poter aiutare a migliorare questa risposta. :) – memowe
Dopo aver letto: http://www.devshed.com/c/a/Perl/More-Perl-Bits/ La moneta è caduta :-) –