0

因此,以某种方式从以下十六进制数据(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)

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

所以我写了

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"

谢谢!

4

1 回答 1

0

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

于 2012-10-11T20:13:05.527 回答