问题标签 [unpack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
2161 浏览

perl - 如何以相反的字节顺序打印变量?

我正在尝试将变量$num转换为其反向字节顺序并将其打印出来:

它打印为一些不可打印的字符,在十六进制编辑器中看起来不错,但我怎样才能让它在控制台上可读?我已经尝试过了:

这使得 perl 抱怨一个非数字参数,所以我认为pack返回一个字符串。任何想法如何0xb7dd1455在控制台上打印出来,基于$num

0 投票
2 回答
1362 浏览

ruby - Ruby - 如何将二进制字符串解压缩为普通字符串?

我正在打开一个 CSV 文件并使用 File.open(filename) 从中读取值。

所以我做这样的事情:

我遇到的问题是 line_array 中的值似乎是一种奇怪的格式。例如,CSV 文件单元格中的值之一是 0.86。当我打印出来时,它看起来像“0 . 8 6”

所以它有点像字符串,但我不确定它是如何编码的。当我尝试进行一些自省时:

到底他妈发生了什么?!如何将 ratio 转换为可以调用 ratio.to_f 的普通字符串?

谢谢。

0 投票
1 回答
2305 浏览

perl - Perl 打包/解包/移位

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

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

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

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

使用“打印”来检查其中的每一个都不会显示正确的值,使用“sprintf”也不会......

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

此时一切看起来都很好,使用“打印”我可以看到 AND 操作的值看起来是正确的,但是当我尝试按如下方式转换时:

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

执行这种操作的正确方法是什么?

0 投票
4 回答
3751 浏览

php - 在 PHP 中的 64 位架构上打包/解包 64 位 int

为什么我在 x64 架构上得到以下输出?

似乎它可以处理签名的 64 位整数,但它不能打包/解包它们。根据文档http://us3.php.net/pack, I 的大小应该取决于机器,在这种情况下是 64 位。

0 投票
1 回答
289 浏览

perl - “W”在 Perl 的 unpack 函数中究竟做了什么?

我不明白“W”到底是做什么的。

打印:116

静态照片:116

0 投票
1 回答
855 浏览

javascript - 如何解压这些类型的 javascript 文件?

0 投票
1 回答
443 浏览

php - 确定PHP中二进制数据的未知数据格式

我有混合了 uint32 和空终止字符串的二进制数据。我知道单个数据集的大小(每组数据共享相同的格式),但不知道实际格式。

我一直在使用 unpack 读取具有以下功能的数据:

然后基本上尝试这两个函数并查看数据作为字符串是否有意义,如果不是,它可能是一个 int,有没有更简单的方法可以做到这一点?

谢谢。

0 投票
1 回答
649 浏览

php - 从 PHP 中的 base64Binary 获取时间戳

Web 服务以 base64Binary 格式返回时间戳字段。在 SOAP 响应中看起来像这样:

PHP __soapCall,然而,b64_decode()s 和我得到一个看起来像')#▒' 的二进制字符串。我如何从中获得实际的时间戳?我试图 unpack('L') 它但它给了我 Array([1] => 0) 结果。真的有零,即 1970-01-01 还是我错过了什么?

0 投票
3 回答
288 浏览

perl - 如何在不实际拆包的情况下获得 Perl 中打包项目的数量?

我有一串packed 值,这些值是使用以下内容按顺序创建的:

在另一个程序中,在我加载之后$packed,我希望找出实际打包了多少个值。我知道在unpacking 之后该怎么做:

但真的有必要吗?如果我只关心值的数量,我可以做得更好并跳过unpacking 吗?

0 投票
3 回答
16544 浏览

perl - 什么时候使用 unpack('h*' ...) 或 pack('h*' ...)?

在 Perl 中,packunpack两个用于将字节转换为十六进制的模板:

h    十六进制字符串(低 nybble 优先)。
H    一个十六进制字符串(高 nybble 优先)。

最好用一个例子来说明这一点:

如您所见,H这是人们在考虑将字节转换为十六进制时通常的意思。那么这样做的目的是h什么?拉里一定认为有人可能会使用它,否则他不会费心把它包括在内。

你能举一个真实世界的例子,你实际上想要使用h而不是Hwith packorunpack吗? 我正在寻找一个具体的例子;如果您知道一台机器可以像这样组织其字节,那是什么,您可以链接到有关它的一些文档吗?

我可以想到可以使用 h的示例,例如当您并不真正关心格式是什么时序列化一些数据,只要您可以将其读回,但H同样有用。我正在寻找一个h比.H