百科狗-知识改变命运!
--

bindec() - 二进制转换为十进制 - php 数学函数

乐乐1年前 (2023-11-21)阅读数 24#技术干货
文章标签转换为

bindec()

(PHP 4, PHP 5, PHP 7)

二进制转换为十进制

说明

bindec(string $binary_string):number

返回$binary_string参数所表示的二进制数的十进制等价值。

bindec()将一个二进制数转换成integer,或者出于大小的需要,转换为float类型。

bindec()将所有的$binary_string值解释为无符号整数。这是由于bindec()函数将其最高有效位视为数量级而非符号位。

参数

$binary_string

要转换的二进制字符串

Warning

参数必须为字符串。使用其他数据类型会导致不可预知的结果。

返回值

bindec() - 二进制转换为十进制 - php 数学函数

$binary_string的十进制数值

更新日志

版本说明
4.1.0本函数如今可以转换超过程序运行平台中integer类型最大值的数,此时其值会返回为float类型。

范例

Example #1bindec()例子

以上例程会输出:

51
51
7

Example #2bindec()将输入解读为无符号整数

以上例程在 32 位机器上的输出:

input:        1073741823
binary:       00111111111111111111111111111111
bindec():     1073741823
input:        1073741824
binary:       01000000000000000000000000000000
bindec():     1073741824
NOTE:         See the rollover?  Watch it next time around...
input:        2147483647
binary:       01111111111111111111111111111111
bindec():     2147483647
NOTE:         PHP_INT_MAX
input:        -2147483648
binary:       10000000000000000000000000000000
bindec():     2147483648
NOTE:         interpreted to be one more than PHP_INT_MAX
input:        -1
binary:       11111111111111111111111111111111
bindec():     4294967295
NOTE:         interpreted to be the largest unsigned integer

以上例程在 64 位机器上的输出:

input:        4611686018427387903
binary:       0011111111111111111111111111111111111111111111111111111111111111
bindec():     4611686018427387903
input:        4611686018427387904
binary:       0100000000000000000000000000000000000000000000000000000000000000
bindec():     4611686018427387904
NOTE:         See the rollover?  Watch it next time around...
input:        9223372036854775807
binary:       0111111111111111111111111111111111111111111111111111111111111111
bindec():     9223372036854775807
NOTE:         PHP_INT_MAX
input:        -9223372036854775808
binary:       1000000000000000000000000000000000000000000000000000000000000000
bindec():     9223372036854775808
NOTE:         interpreted to be one more than PHP_INT_MAX
input:        -1
binary:       1111111111111111111111111111111111111111111111111111111111111111
bindec():     18446744073709551616
NOTE:         interpreted to be the largest unsigned integer
              (18446744073709551615) but skewed by float precision

参见

  • decbin() 十进制转换为二进制
  • octdec() 八进制转换为十进制
  • hexdec() 十六进制转换为十进制
  • base_convert() 在任意进制之间转换数字
i think a better method than the "shift-method" is my method ^^...
here it comes:
function convert2bin($string) {
   $finished=0;
   $base=1;
   if(preg_match("/[^0-9]/", $string)) {
     for($i=0; $string!=chr($i); $i++);
     $dec_nr=$i;
   }
   else $dec_nr=$string;
   while($dec_nr>$base) {
     $base=$base*2;
     if($base>$dec_nr) {
       $base=$base/2;
       break;
     }
   }
   while(!$finished) {
     if(($dec_nr-$base)>0) {
       $dec_nr=$dec_nr-$base;
       $bin_nr.=1;
       $base=$base/2;
     }
     elseif(($dec_nr-$base)1) {  
         $bin_nr.=0;
         $base=$base/2;
       }
     }
   }
   return $bin_nr;
 }
=====================================================
if you want to reconvert it (from binary to string or integer) you can use this function: 
function reconvert($bin_nr) {
   $base=1;
   $dec_nr=0;
   $bin_nr=explode(",", preg_replace("/(.*),/", "$1", str_replace("1", "1,", str_replace("0", "0,", $bin_nr))));
   for($i=1; $i$bin_nr_bit) {
     if($bin_nr_bit==1) {
       $dec_nr+=$base;
       $base=$base/2;
     }
     if($bin_nr_bit==0) $base=$base/2;
   }
   return(array("string"=>chr($dec_nr), "int"=>$dec_nr));
 }
Two functions to convert 16bit or 8bit binary to integer using two's complement. If input exceeds maximum bits, false is returned. Function is easily scalable to x bits by changing the hexadecimals. 
## calculate binary with "shift-method" ##

## example ##
[bin] 123 = [dec] 1111011
e.g.
123/2 = 61,5 => 1
61/2 = 30,5 => 1
30/2 = 15  => 0
15/2 = 7,5 => 1
7/2  = 3,5 => 1
3/2  = 1,5 => 1
1/2  = 0,5 => 1
(0/2  = 0  finish)
Left-shift a string by a number of bytes

Right-shift a string by a number of bytes

Additional functions used by the two preceding: 
Binary to Decimal conversion using the BCMath extension..

This will simply convert from Base-2 to Base-10 using BCMath (arbitrary precision calculation).
See also: my 'BCDec2Bin' function on the 'decbin' document.
Enjoy,
Nitrogen.

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)