标签: pack

Perl打包/拆包/换档

我已经在Perl中遇到了这个问题几天了,在搜索了无数的手册,perldocs和谷歌搜索太多的搜索条件后,希望这里有人可以帮助我.

我有两个代表十六进制值的字符串,即"FFFF",而不是Perl十六进制数0xFFFF.给定其中两个字符串,我希望将它们转换为二进制形式,对两者执行按位AND,然后获取此输出并检查从LSB到MSB的每个位.

我现在有两个问题; 将十六进制字符串转换为十六进制数字,并移位按位AND的结果.

为了将十六进制字符串转换为十六进制数字,我尝试了以下方法,当我打印出来检查时,这些方法似乎不起作用:

$a = unpack("H*", pack("N*", $a));

$a = sprintf("%H", $a);
Run Code Online (Sandbox Code Playgroud)

使用'print'来检查每一个都没有显示正确的值,也没有使用'sprintf'...

我执行按位AND后发生的第二个问题,我想通过向右移1来检查每个位.为了避免先前的问题,我使用实际的Perl十六进制数而不是十六进制字符串(0xffff而不是"ffff") .如果我尝试按如下方式执行右移:

#Convert from hex number to binary number

$a = sprintf("%B", $a);
$b = sprintf("%B", $b);

$temp = pack("B*", $a) & pack("B*", $b);
$output = unpack("B*", $temp);
Run Code Online (Sandbox Code Playgroud)

此时一切看起来都很好,并且使用'print'我可以看到AND操作的值看起来正确,但是当我尝试按如下方式移动时:

$output = pack("B*", $output);
$output = $output >> 1;
$output = unpack("B*", $output);
Run Code Online (Sandbox Code Playgroud)

我得到的结果值是二进制形式,但不正确.

执行此类操作的正确方法是什么?

perl unpack shift bit pack

2
推荐指数
1
解决办法
2219
查看次数

python pack以字符串格式输出

我做了以下事情.

from struct import pack, unpack
t = 1234
tt = str(pack("<I", t))
Run Code Online (Sandbox Code Playgroud)

打印tt给出\xf3\xe0\x01\x00.如何t从tt 获取原始值?

我尝试使用解压缩,repr(tt)但这没有用.我该怎么做呢?

python struct pack

2
推荐指数
1
解决办法
3653
查看次数

在Perl中,如何打包哈希并将其解压缩回原始状态?

我想在数据库中将哈希保存为打包字符串,我得到包装部分确定,但是我遇到了问题

测试哈希

my $hash = {

   test_string   => 'apples,bananas,oranges',
   test_subhash  => { like => 'apples' },
   test_subarray => [ red, yellow, orange ]

}
Run Code Online (Sandbox Code Playgroud)

我想也许我可以在这个例子中使用JSON:XS 将哈希转换为json字符串,然后打包JSON字符串......

关于这种方法的想法?

perl hash json pack

2
推荐指数
1
解决办法
1927
查看次数

Perl pack,unpack和STDIN

有人可以解释我为什么这不能像我期望的那样工作吗?

zen:~ emx$ echo ABC | perl -nle "print unpack 'H*'"
414243
zen:~ emx$ echo 414243 | perl -nle "print pack 'H*'"

zen:~ emx$
Run Code Online (Sandbox Code Playgroud)

不知何故,我期待第二个命令打印ABC

perl stdin unpack pack

2
推荐指数
1
解决办法
656
查看次数

Perl包模板'a'重复

我需要提取一系列两个字符(我将其传递给解包,因为它们实际上是一种奇怪的BCD形式).我目前使用:

my @whatever = unpack('a2 a2 a2 a2 a2 a2 a2', get_bcd_string());
Run Code Online (Sandbox Code Playgroud)

似乎我不能使用像[6]重复因素那样的东西a2,但我想确定一下.

我意识到我可以只使用a12字符串提取并拆分字符串,但我正在尝试学习是否可以更有效地使用解压缩.

谢谢

perl pack

2
推荐指数
1
解决办法
143
查看次数

Ruby将64位IEEE 754十六进制转换为double

我需要从IMU输出十六进制数据流到lat long和height值.

数据以双精度十六进制字符串形式出现,我需要将它们输出为十进制值.

我尝试了几个打包和解压缩值,但最终除了编写自己的函数之外无法找到解决方案.

有没有办法翻译这个双精度64位十六进制字符串:

"4044F33333333333"
Run Code Online (Sandbox Code Playgroud)

进入这个小数:

41.900000000000000
Run Code Online (Sandbox Code Playgroud)

使用打包和解包功能?

有没有能够处理IEEE 754号码的图书馆?

ruby unpack ieee-754 pack

2
推荐指数
1
解决办法
1155
查看次数

在tkinter python中的输入框旁边打包标签

我有一个窗口,提示用户输入其日志文件的目录。但是,我的标签似乎贴在输入框的顶部。关于如何将它们并排包装的任何想法吗?

labelText=StringVar()

labelText.set("Enter directory of log files")

labelDir=Label(app,textvariable=labelText,height=4)

labelDir.pack()

directory=StringVar(None)

dirname=Entry(app,textvariable=directory,width=50)

dirname.pack()
Run Code Online (Sandbox Code Playgroud)

python label tkinter pack tkinter-entry

2
推荐指数
1
解决办法
2万
查看次数

打包/解压缩二进制数据数组

我有一个无符号整数数组(32位),我想pack进入二进制流:

my @n = (4,8,15,16,23,42);
my $foo = join('', map(pack('I', $_), @n)); # Ugly, isn't?
Run Code Online (Sandbox Code Playgroud)

$foo 应该包含这个二进制流(取决于字节顺序)

0000000 0000 0004 0000 0008 0000 000F 0000 0010
0000010 0000 0017 0000 002A
Run Code Online (Sandbox Code Playgroud)

然后我想将unpack二进制流返回一个数组.

如何使用Perl正确执行此操作,如果可能,仅使用内置模块?

binary perl integer pack

2
推荐指数
1
解决办法
514
查看次数

PHP-将Little Endian Hex转换为Big Endian Hex

我正在尝试将小端字节转换为大端字节

例:

小尾数法: E1 31 01 00 00 9D

大端: 9D 00 00 01 31 E1

php byte unpack endianness pack

2
推荐指数
1
解决办法
1460
查看次数

Perl Pack Unpack on Shell Variable

Ultimately my goal is to convert a hexdump of data to the correct floating point value. I have set up my shell script to isolate the individual hex values I need to look at and arrange them in the correct order for a little Endian float conversion.

To simplify everything, I'll bypass the code I have managed to get working, and I'll start with:

rawHex=0x41000000
echo $(perl -e 'print unpack "f", pack "L", $ENV{rawHex}')
Run Code Online (Sandbox Code Playgroud)

When I execute this code, the …

bash shell perl unpack pack

2
推荐指数
1
解决办法
58
查看次数

标签 统计

pack ×10

perl ×6

unpack ×5

python ×2

bash ×1

binary ×1

bit ×1

byte ×1

endianness ×1

hash ×1

ieee-754 ×1

integer ×1

json ×1

label ×1

php ×1

ruby ×1

shell ×1

shift ×1

stdin ×1

struct ×1

tkinter ×1

tkinter-entry ×1