【问题标题】:How to convert long number (string) in php to 32 bytes buffer?如何将 php 中的长数字(字符串)转换为 32 字节缓冲区?
【发布时间】:2020-08-07 06:57:46
【问题描述】:

我正在尝试转换这个长数字: 7066362913544046959379121391986018585750267357944410108207023200264959783199

到 32 字节的缓冲区。

我可以使用以下代码在 python 中做到这一点:

x = "7066362913544046959379121391986018585750267357944410108207023200264959783199"
x_int = int(x)
x_in_bytes = (x_int).to_bytes(32, byteorder='little')

在php中可以这样吗?

【问题讨论】:

    标签: php byte long-integer data-conversion


    【解决方案1】:

    您好,您将使用intval 方法和pack 方法。

    代码将如下所示:

    <?php
    
    $x = "7066362913544046959379121391986018585750267357944410108207023200264959783199";
    $xInt = intval($x);
    $xBytes = pack('L', $xInt);
    
    ?>
    

    “L”字符串是格式(无符号长,始终为 32 位,机器字节顺序)。格式字符串由格式代码和一个可选的转发器参数组成。在docs 中阅读更多相关信息。

    【讨论】:

    • 感谢您的回复。 $xInt 的值与$x 不同,但是由于 php 的 MAX_INT 为 2^63,$xInt 的值将是 9223372036854775807。
    • 没错,我现在注意到了。您可以省略该行并使用pack 方法直接将$x 转换为字节。
    猜你喜欢
    • 2016-09-23
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多