如何找到该字节的偏移值?

时间:2012-10-11 06:38:59

标签: perl

因此,从以下十六进制数据(03 00 21 04 80 04)以某种方式获得了以下值。

任何人都可以告诉我该怎么做以及如何实现这一目标?

Band                                 = 3  (40,6)
Duplex_Mode                          = 0  (46,1)
Result                               = 0  (47,1)
Reserved_1                           = 0  (48,8)
Min_Search_Half_Frames               = 1  (56,5)
Min_Search_Half_Frames_Early_Abort   = 1  (61,5)
Max_Search_Half_Frames               = 1  (66,5)
Max_PBCH_Frames                      = 0  (71,5)
Number_of_Blocked_Cells              = 0  (76,3)
Number_PBCH_Decode_Attemp_Cells      = 1  (79,3)
Number_of_Search_Results             = 1  (82,4)
Reserved_2                           = 0  (86,2)

paranthesis中的参数是我被告知的偏移/长度。我不明白我应该如何根据这些信息解压缩这个有效载荷。

所以我写了

my $data = pack ('C*', map hex, split /\s+/, "03 00 21 04 80 04");
($tmp1, $Reserved_1, $tmp2) = unpack("C C V", $data);

现在有所帮助。如何从$tmp1$tmp2

解压缩上述表值

编辑:十六进制数据= "00 00 00 7F 08 03 00 21 04 80 04 FF D7 FB 0C EC 01 44 00 61 1D 00 00 10 3B 00 00 FF D7 FB 0C 00 00 8C 64 00 00 EC 45"

谢谢!

1 个答案:

答案 0 :(得分:0)

您可能希望定义一组位掩码,并使用按位AND运算来解压缩数据。