gpt4 book ai didi

PHP:转换为 32 位长整数或无符号整数

转载 作者:行者123 更新时间:2023-11-29 14:02:23 25 4
gpt4 key购买 nike

我有一个 PostgreSQL 8.4.6 表,其中最多 32 张牌的玩家手牌用 32 位表示:

 # \d pref_hand
Table "public.pref_hand"
Column | Type | Modifiers
--------+-----------------------------+---------------
id | character varying(32) |
hand | bigint | not null
money | integer | not null
stamp | timestamp without time zone | default now()
Check constraints:
"pref_hand_hand_check" CHECK (hand > 0)

(你可以看到我已经在上面使用bigint作弊了)。

My script (请滚动到底部以查看渲染的卡片)在 64 位 CentOS 5.5 Linux 上工作正常。但是当我将它复制到我的 32 位开发 VM 时,它失败了。

代码摘录如下:

$sth = $db->prepare('select hand, money
from pref_hand where id=?
order by stamp desc');
$sth->execute(array($id));
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
print ('<div>');
for ($i = count($CARDS) - 1; $i >= 0; $i--) {
$card = $CARDS[$i];
$color = (strpos($card, '♥') > 0 ||
strpos($card, '♦') > 0 ? 'red' : 'black');

if (23 == $i || 15 == $i || 7 == $i)
print('&nbsp;');

if ((1 << $i) & $row['hand'])
printf('<span class="%s">%s</span>', $color, $CARDS[$i]);
}
print ('</div>');
}

我认为 if ((1 << $i) & $row['hand']) 在那里失败了(抱歉,如果我不这样做,我稍后会准备一个简化的测试用例'收到答复...)

我的问题是:如何在 PHP 中最好地处理这些情况?我需要以某种方式将 $row['hand'] 转换为 unsigned intlong - 以便 AND 位运算符再次工作,但是我在 PHP 文档中找不到这些数据类型。

谢谢!亚历克斯

最佳答案

您可以使用 GMP存储号码,然后通过 gmp_testbit 测试卡是否可用.虽然这显然需要安装 GMP(而且它通常不在共享主机上。)

关于PHP:转换为 32 位长整数或无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4736864/

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