bindec() - 二进制转换为十进制 - php 数学函数
bindec()
(PHP 4, PHP 5, PHP 7)
二进制转换为十进制
说明
bindec(string $binary_string):number返回$binary_string参数所表示的二进制数的十进制等价值。
bindec()将一个二进制数转换成integer,或者出于大小的需要,转换为float类型。
bindec()将所有的$binary_string值解释为无符号整数。这是由于bindec()函数将其最高有效位视为数量级而非符号位。
参数
$binary_string要转换的二进制字符串
Warning参数必须为字符串。使用其他数据类型会导致不可预知的结果。
返回值
$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)
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)