gpt4 book ai didi

php - 如何在 MySQL 或 PHP 中将 32 位整数从无符号转换为有符号?

转载 作者:可可西里 更新时间:2023-11-01 06:33:50 27 4
gpt4 key购买 nike

我在 PHP 中有一个字符串(来自某些数据源),它表示一个格式化的无符号 32 位整数。我需要将它作为一个 signed 32 位整数存储到 MySQL 数据库中,以便稍后我可以从 PHP 检索它并将它用作(可能为负的)有符号整数常量(因为 PHP 不t 有无符号整数)。

所以,我需要的是一种转换方法,用于 PHP 或 MySQL。它不应该依赖于平台(没有字节序/32/64 位问题)。

我知道如何使用 MySQL 将有符号整数转换为无符号整数:

select CAST((-1062726980 & 0xFFFFFFFF) AS UNSIGNED INTEGER);
+------------------------------------------------------+
| CAST((-1062726980 & 0xFFFFFFFF) AS UNSIGNED INTEGER) |
+------------------------------------------------------+
| 3232240316 |
+------------------------------------------------------+

但我不能让它以相反的方式工作(注意:MySQL 在进行强制转换时使用 64 位算法)。

谢谢。

最佳答案

如果您只是在 PHP 中将数字转换为整数,就可以达到目的。

echo (int)3232240316 . "\n";

给予

-1062726980

注意:如果您想在 PHP 中将有符号整数转换为无符号整数,只需执行以下操作:

$number += 4294967296;

例子:

$number = -1062726980;
echo $number . "\n";
$number += 4294967296;
echo $number . "\n";

给出:

-1062726980
3232240316

关于php - 如何在 MySQL 或 PHP 中将 32 位整数从无符号转换为有符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1147512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com