【发布时间】:2020-04-07 12:34:51
【问题描述】:
我有以下十六进制数据格式:
9BDCE310
B4D9F1E502
EAB1A9C607
88EE8EB9F9FFFFFFFF01
9E828D89FCFFFFFFFF01
通常,我使用以下代码解码回整数:
sub decodeInt
{
$_[0] =~ s/^([\x80-\xFF]*[\x00-\x7F])// or return;
my $encoded_num = $1;
my $num = 0;
for ( reverse unpack 'C*', $encoded_num )
{
$num = ( $num << 7 ) | ( $_ & 0x7F );
}
return $num;
}
但它不适用于带符号的负整数值(最后 2 个数据)。
88EE8EB9F9FFFFFFFF01
9E828D89FCFFFFFFFF01
请帮我修改代码。
【问题讨论】: