标签: pack

如何使用 Raku 将十六进制字符串转换为 IEEE754 浮点数?

在Python中,unpack可以将十六进制字符串转换为IEEE754浮点数:

import struct

print(struct.unpack('<f', bytes.fromhex("00000042"))[0]) # 32.0
Run Code Online (Sandbox Code Playgroud)

<表示 LITTLE ENDIAN 字节顺序,f表示 Float 格式。

如何使用 Raku 将十六进制字符串转换为 IEEE754 浮点数?

unpack pack raku

9
推荐指数
1
解决办法
154
查看次数

jQuery链接与下载?

哪种方式更好?要链接到http://ajax.googleapis.com上的jQuery Pack .或者下载相应的文件并在本地链接?有关系吗?链接是否有可能消失?或者是否有可能在线更新文件,最好链接到它?好奇.

谢谢,特蕾西

jquery download hyperlink pack

8
推荐指数
2
解决办法
2884
查看次数

在PHP中打包().非法十六进制数字警告

我在php中使用pack()时遇到了一些问题

$currencypair = "EUR/USD";
$buy_sell = "buy";
$alert_device_token =array("a","a","b");
$message = "Your " . $currencypair . " " . $buy_sell . " alert price has been reached!";
$payload['aps'] = array (
  'alert' => $message,
  'badge' => 1,
  'sound' => 'default'
);
$payload = json_encode($payload);

foreach ($alert_device_token as $alert_device)
{
  $apnsMessage = chr(0) . chr(0) . chr(32) . 
                 pack('H*', str_replace(' ', '', $alert_device)) . 
                 chr(0) . chr(strlen($payload)) . $payload;
  echo $apnsMessage;
}
Run Code Online (Sandbox Code Playgroud)

现在有时我会得到以下警告,运行相同的代码 -

Warning: pack() [function.pack]: Type H: illegal hex …
Run Code Online (Sandbox Code Playgroud)

php hex pack

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

如何切换二进制数据的字节顺序

我有一个二进制文件,我正在阅读,其中一些2字节值以'反向'字节顺序(小端?)存储,例如.

1D 00 13 00 27  00 3B 00 45  00 31 00 4F
Run Code Online (Sandbox Code Playgroud)

创建这些值的原始程序将它们内部存储为short.这些值应该对应于:29,19,39,59,69,49,79.我正在尝试使用python 2.6.5读取这些值(尽管这可能会在更老的系统上运行,例如2.3和2.4) .

我试过用了

val1, val2, val3, val4, val5, val6, val7 = struct.unpack("1h 1h 1h 1h 1h 1h 1h", data)
Run Code Online (Sandbox Code Playgroud)

当然,价值观都是错误的:

7427
4864
9984
15104
17664
12544
20224
Run Code Online (Sandbox Code Playgroud)

在查看了struct的文档后,我想我可以使用类似的东西

val1, ... = struct.unpack("!h !h ...
Run Code Online (Sandbox Code Playgroud)

但是在测试时,我才得到

struct.error: bad char in struct format
Run Code Online (Sandbox Code Playgroud)

如何使用正确的字节顺序解压缩这些值?我是否分别在两个字节中读取,然后在python代码中重新组装它们?

python struct pack

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

Ruby的包装和解包解释

甚至阅读标准文档后,我仍然无法理解如何Ruby的Array#packString#unpack准确的工作.这是导致我最麻烦的例子:

irb(main):001:0> chars = ["61","62","63"]
=> ["61", "62", "63"]
irb(main):002:0> chars.pack("H*")
=> "a"
irb(main):003:0> chars.pack("HHH")
=> "```"
Run Code Online (Sandbox Code Playgroud)

我希望这两个操作都返回相同的输出:"abc".他们每个人都以不同的方式"失败"(因为我可能期待错误的事情,所以不是真的失败).所以有两个问题:

  1. 这些产出背后的逻辑是什么?
  2. 如何实现我想要的效果,即将十六进制数字序列转换为相应的字符串.更好的是 - 给定一个整数n,如何将其转换为与文本文件相同的字符串,将其视为数字(例如,在十六进制编辑器中)等于n?

ruby pack

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

64位浮点文字PHP

我试图在PHP中将64位浮点数转换为64位整数(并返回).我需要保留字节,所以我正在使用pack和unpack函数.我正在寻找的功能基本上是Java的Double.doubleToLongBits()方法.http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#doubleToLongBits(double)

我设法得到这个远远的帮助来自php docs for pack()的评论:

function encode($int) {
        $int = round($int);

        $left = 0xffffffff00000000;
        $right = 0x00000000ffffffff;

        $l = ($int & $left) >>32;
        $r = $int & $right;

        return unpack('d', pack('NN', $l, $r))[1];
}
function decode($float) {
        $set = unpack('N2', pack('d', $float));
        return $set[1] << 32 | $set[2];
}
Run Code Online (Sandbox Code Playgroud)

这很好用,大部分......

echo decode(encode(10000000000000));
Run Code Online (Sandbox Code Playgroud)

亿

echo encode(10000000000000);
Run Code Online (Sandbox Code Playgroud)

1.1710299640683E-305

但是这里变得棘手......

echo decode(1.1710299640683E-305);
Run Code Online (Sandbox Code Playgroud)

-6629571225977708544

我不知道这里有什么问题.亲自试试:http://pastebin.com/zWKC97Z7

你需要在Linux上使用64位PHP.该网站似乎模拟了该设置:http://www.compileonline.com/execute_php_online.php

php literals double-precision pack long-integer

8
推荐指数
1
解决办法
1027
查看次数

何时/为什么我应该在 python 中使用 struct 库来打包和解包?

我不明白什么时候应该在 python 的结构库中使用打包和解包函数?我也无法理解如何使用它们?读完之后,我的理解是它们用于将数据转换为二进制。但是,当我运行一些示例时:

>>> struct.pack("i",34)
'"\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)

我无法理解它。我想了解它的目的,这些转换是如何发生的,'\x' 和其他符号代表什么/意味着什么以及解包如何工作。

python struct pack python-2.7

8
推荐指数
1
解决办法
1505
查看次数

为什么hex - > base64与base64 - > hex使用pack和unpack有什么不同?

我得到了这个代码,它从十六进制转换为base64,反之亦然.我to_base64从另一个问题得到了,我写to_hex了一些猜测和反复试验.

class String

  def to_base64
    [[self].pack("H*")].pack("m0")
  end

  def to_hex
    self.unpack("m0").first.unpack("H*").first
  end
end
Run Code Online (Sandbox Code Playgroud)

但我真的不神交packunpack方法,甚至阅读文档后.具体来说,我对这两种实现之间的不对称感到困惑.从概念上讲,在这两种情况下,我们采用在某个基数(16或64)中编码的字符串,并且我们希望将其转换为另一个基数.那么为什么我们不能这样实现to_hex:

def to_hex
  [[self].pack("m0")].pack("H*")
end
Run Code Online (Sandbox Code Playgroud)

还是to_base64unpack?为什么我们选择的基础完全改变了我们需要用来完成转换的方法?

ruby arrays unpack pack

7
推荐指数
1
解决办法
2522
查看次数

为什么解压缩结果会产生元组?

在Python结构中打包一个整数后,即使它只包含一个项目,解包也会产生一个元组.为什么拆包会返回一个元组?

>>> x = struct.pack(">i",1)

>>> str(x)
'\x00\x00\x00\x01'

>>> y = struct.unpack(">i",x)

>>> y
(1,)
Run Code Online (Sandbox Code Playgroud)

python unpack pack

7
推荐指数
1
解决办法
5236
查看次数

struct pack返回太长

我正在尝试使用该struct.pack功能

import struct
values = (0, 44)
s = struct.Struct('HI')
b = s.pack(*values)
print(b)
print(str(len(b)))
Run Code Online (Sandbox Code Playgroud)

它给了我这个输出:

b'\x00\x00\x00\x00,\x00\x00\x00'
8
Run Code Online (Sandbox Code Playgroud)

python文档说:

Format - C Type         - Python type - Standard size - Notes

H      - unsigned short - integer     - 2             - (3)

I      - unsigned int   - integer     - 4             - (3)
Run Code Online (Sandbox Code Playgroud)

所以len()应该是2 + 4 = 6,我需要大小= 6的字节

有任何想法吗?

我在Windows 10上使用Python 3.6

python struct pack

7
推荐指数
1
解决办法
473
查看次数