php - 使用二进制将选择存储为整数

标签 php binary

我知道这是可能的,我只是不知道它叫什么,谷歌也没有太大帮助。

假设您有 4 个选项可供选择,A、B、C 和 D。如果用户选择 A 和 C,您可以简单地将选择保存为 5 = 0101,或者如果用户选择 D(1000 ).

我的问题是,5保存后如何转换回A=1、B=0、C=1、D=0?

我正在尝试保存电影年龄限制,并认为这可能是最好的方法。

最佳答案

我认为该术语是 BCD(二进制编码的十进制)。

以下是您如何在您的情况下实现它:

  1. 创建代表 4 种可能选择的 4 个变量(或常量),并像这样设置它们的值:

    $A = 1;
    $B = 2;
    $C = 4;
    $D = 8;

  2. 然后,对于 A、B、C 和 D 中的每个选择,添加相关变量的值。

在你存储了这个组合值之后,稍后你读回它,并且你想从存储的值中解码选择......

为此,您可以使用 & 运算符(按位 AND)。例如,假设您存储并读回名为 $Answer 的变量的值为 5

Answer 解码为这样的选择:

$intChoiceA = ($Answer & 1);
$intChoiceB = ($Answer & 2);
$intChoiceC = ($Answer & 4);
$intChoiceD = ($Answer & 8);

要获得 True|False 选项,您可以这样做:

$bChoiceA = ($Answer & 1) > 0;
$bChoiceB = ($Answer & 2) > 0;
$bChoiceC = ($Answer & 4) > 0;
$bChoiceD = ($Answer & 8) > 0;

要获得 0|1 的选择,您可以这样做(使用 PHP Ternary Operator :

$intChoiceA = (($Answer & 1) > 0) ? 1 : 0;
$intChoiceB = (($Answer & 2) > 0) ? 1 : 0;
$intChoiceC = (($Answer & 4) > 0) ? 1 : 0;
$intChoiceD = (($Answer & 8) > 0) ? 1 : 0;

关于php - 使用二进制将选择存储为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16497214/

相关文章:

php - 在 MAMP PRO 上安装并启用 Xdebug

matlab - 在 Matlab 中对 float 进行位修改

php - 使用复选框从表中删除用户

javascript - 数据库中的字符串无法调用 Javascript

bash - 在shell脚本中将十进制数转换为十六进制和二进制

binary - 负定点数表示

c++ - 使用 C++ 生成器获取 swf 文件的帧速率

mysql - 存储 MySQL GUID/UUID

php - 如何拥有一个由 Apache 提供服务的 Flask 网站以及位于/blog 的 WordPress 博客?

php - MySQL - 基于另一个查询的查询