好的,因此PHP不是处理任意大整数的最佳语言,因为它本身只支持32位有符号整数.我想要做的是创建一个可以表示任意大二进制数的类,并能够对其中两个执行简单的算术运算(加/减/乘/除).
我的目标是处理128位整数.
我正在研究几种方法,以及我看到的问题.任何关于你会选择什么以及如何进行评论的输入或评论将不胜感激.
方法#1:创建一个128位整数类,在内部将整数存储为四个32位整数.这种方法的唯一问题是,我不确定在操作两个操作数的各个块时如何处理溢出/下溢问题.
方法#2:使用bcmath扩展,因为它看起来像它旨在解决的问题.我采用这种方法的唯一担心是bcmath扩展的比例设置,因为我的128位整数中没有任何舍入错误; 他们必须准确.我也担心能够最终将bcmath函数的结果转换为二进制字符串(我稍后需要将其转换为某些mcrypt加密函数).
方法#3:将数字存储为二进制字符串(可能是LSB优先).从理论上讲,我应该能够以这种方式存储任意大小的整数.我所要做的就是编写四个基本的算术函数来对两个二进制字符串执行add/sub/mult/div并生成二进制字符串结果.这正是我需要交给mcrypt的格式,所以这是一个额外的加分.这是我认为目前最有希望的方法,但我得到的一个问题是PHP没有提供任何方法来操纵各个位(我知道).我相信我必须把它分解成字节大小的块(没有双关语意),此时我对方法#1处理溢出/下溢的问题适用.