>  기사  >  백엔드 개발  >  PHP에서 10진수, 2진수, 8진수, 16진수 변환 관련 기능을 구현하는 방법

PHP에서 10진수, 2진수, 8진수, 16진수 변환 관련 기능을 구현하는 방법

墨辰丷
墨辰丷원래의
2018-05-23 15:00:043053검색

이 글에서는 주로 PHP의 10진수, 2진수, 8진수, 16진수 변환과 관련된 함수의 사용법을 소개합니다. PHP에서 흔히 사용되는 다양한 10진수 변환 함수의 함수, 매개변수, 사용법 및 관련 기능을 구체적인 예를 바탕으로 자세히 분석합니다. 필요한 친구들이 참고할 수 있습니다

1. 바이너리:

1.1. 바이너리에서 10진수로:

기능: bindec(string $binary_string)bindec(string $binary_string)

@param $binary_string 参数表示所要转换的二进制字符串。
@return  返回与$binary_string参数所表示的二进制数的十进制数等价值。

函数说明:

bindec()将一个二进制数转换成Integer类型或者出于大小的需要,转换为float类型。
bindec()将所有的$binary_string值解释为无符号整数。这是因为bindec()函数将其最高有效位视为数量级而非符号位。【即最高位0或1并不被bindec()表示为+或-而是按值来表示1就是1,0就是0】

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

范例:

<?php
  echo bindec(&#39;10010&#39;) . "\n";
  echo bindec(&#39;00110&#39;) . "\n";
  echo bindec(&#39;1111&#39;) . "\n";

以上程序语句会依次输出:18,6,15

1.2.二进制转十六进制

函数:bin2hex(string $str)

@param  $str 将要转换的ASCII字符的字符串。
@return  返回转换字符串的十六进制值。

函数说明:

bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过使用 pack() 函数再转换回去。
bin2hex() 函数转换使用字节方式,高四位字优先。

范例:

(1)bin2hex()转换‘chengdu'为十六进制值:

<?php
  $str = bin2hex(&#39;chengdu&#39;);
  echo $str;

以上程序语句会输出:6368656e676475

(2)把一个字符串值从二进制转换为十六进制,再转换回去:

<?php
  $str = &#39;chengdu&#39;;
  echo bin2hex($str) . "<br/>";
  echo pack("H*", bin2hex($str)) . "<br/>";

以上程序语句依次输出:6368656e676475, chengdu

2.八进制:

2.1.八进制转十进制:

函数:octdec(string $octal_string)

@param  $octal_string 参数表示将要转换的八进制字符串。
@return   返回$octal_string参数所表示的八进制数的十进制等值。

函数说明:

octdec()可以处理Integer大数字,但在这种情况下它会返回float类型。

范例:

<?php
  echo octdec( &#39;010&#39; ) . "\n";
  echo octdec( decoct( 45 ) );

以上程序语句会输出:8, 45

3.十进制:

3.1.十进制转二进制:

函数:decbin(int $number)

@param  $number  所要转换的十进制数字,所能转换的最大数值为十进制的4294967295,其decbin结果为 32 个 1 的字符串。
@return   返回十进制数字转换后的二进制字符串。

函数说明:

decbin()函数所能转换的最大十进制数值为4294967295,其结果为 32 个 1 的字符串。

范例:

<?php
  echo decbin ( 10 ) . "\n";
  echo decbin ( 50 );

以上程序语句会输出:1010, 110010

3.2.十进制转八进制:

函数:decoct(int $number)

@param  $number 所要转换的十进制数字,所能转换的最大数值是十进制的4294967295,其decoct()结果为 "37777777777"。
@return   返回一个包含有给定$number参数的八进制表示的字符串。

函数说明:

decoct()函数所能转换的最大十进制数数值为4294967295,其结果为 "37777777777"。

范例:

<?php
  echo decoct ( 10 ) . "\n" ;
  echo decoct ( 50 );

以上程序语句会依次输出:12, 62

3.3.十进制转十六进制:

函数:dechex(int $number)

@param $number 将要转换的十进制数字。
@return   返回一个包含给定$number参数的十六进制表示的字符串。

函数说明:

dechex()函数所能转换的十进制的最大数值是:PHP_INT_MAX*2 +/- 1,在32位系统上是十进制的4294967295,其dechex()

@param $binary_string 이 매개변수는 변환할 바이너리 문자열을 나타냅니다. 🎜@return $binary_string 매개변수가 나타내는 이진수에 해당하는 10진수를 반환합니다. 🎜🎜🎜함수 설명: 🎜🎜🎜bindec()크기 요구에 따라 이진수를 정수 유형 또는 부동 소수점 유형으로 변환합니다. 🎜bindec()는 모든 $binary_string 값을 부호 없는 정수로 해석합니다. 이는 binec() 함수가 최상위 비트를 부호 비트가 아닌 크기로 처리하기 때문입니다. [즉, 가장 높은 비트 0 또는 1은 bindec()에서 + 또는 -로 표시되지 않고 값으로 표시됩니다. 1은 1이고 0은 0입니다.]🎜🎜🎜참고: 🎜매개변수는 문자열이어야 합니다. 다른 데이터 유형은 예측할 수 없는 결과를 초래할 수 있습니다. 🎜🎜예:🎜

🎜

<?php
  echo dechex ( 10 ) . "\n" ;
  echo dechex ( 58 );
🎜🎜🎜위 프로그램 명령문은 18, 6, 15🎜🎜🎜1.2 이진수에서 16진수🎜🎜🎜 함수: bin2hex( string $str)🎜🎜@param $str 변환할 ASCII 문자의 문자열입니다. 🎜@return 변환된 문자열의 16진수 값을 반환합니다. 🎜🎜🎜함수 설명: 🎜🎜🎜bin2hex() 함수는 ASCII 문자 문자열을 16진수 값으로 변환합니다. pack() 함수를 사용하여 문자열을 다시 변환할 수 있습니다. 🎜bin2hex() 함수 변환은 니블 우선순위가 높은 바이트 모드를 사용합니다. 🎜🎜예: 🎜🎜(1) bin2hex() 'chengdu'를 16진수 값으로 변환: 🎜

🎜

<?php
  $hex = hex2bin ( "6368656e67206475" );
  echo $hex;
🎜🎜🎜위 프로그램 문은 다음을 출력합니다: 6368656e676475🎜 🎜(2) 문자열 값을 2진수에서 16진수로 변환하고 다시 되돌립니다: 🎜

🎜

<?php
  var_dump ( hexdec ( "See" ));
  var_dump ( hexdec ( "ee" ));
  // 上面两个都输出: "int(238)"
  var_dump ( hexdec ( "that" )); // 输出"int(10)"
  var_dump ( hexdec ( "a0" )); // 输出"int(160)"
  //通过上面的例子可以看出来:hexdec()会忽略它遇到的任意非十六进制的字符。
🎜🎜🎜위 프로그램 문은 순서대로 출력됩니다: 6368656e676475, chengdu🎜🎜🎜2. 8진수: 🎜🎜🎜🎜2.1. 8진수에서 10진수로: 🎜🎜🎜기능: octdec(string $octal_string)🎜🎜 @param $octal_string 이 매개변수는 변환할 8진수 문자열을 나타냅니다. 🎜@return $octal_string 매개변수가 나타내는 8진수에 해당하는 10진수를 반환합니다. 🎜🎜🎜함수 설명: 🎜🎜🎜octdec()은 정수형 큰 숫자를 처리할 수 있지만 이 경우 부동 소수점 유형을 반환합니다. 🎜🎜예: 🎜

🎜

<?php
  $hexadecimal = &#39;A37334&#39; ;
  echo base_convert ( $hexadecimal , 16 , 2 );
  //print 101000110111001100110100
  echo base_convert ( $hexadecimal , 16 , a);
  //print 10711860
🎜🎜🎜위 프로그램 명령문은 8, 45🎜🎜🎜3을 출력합니다. 범위 >🎜🎜3.1. 10진수에서 2진수로: 🎜🎜함수: decbin(int $number)🎜🎜@param $number Convert 10진수의 경우 변환할 수 있는 최대값은 10진수로 4294967295이고, decbin 결과는 32개의 1로 이루어진 문자열이다. 🎜@return 십진수를 변환한 이진수 문자열을 반환합니다. 🎜🎜🎜함수 설명: 🎜🎜🎜decbin() 함수가 변환할 수 있는 최대 소수 값은 4294967295이고, 결과는 32개의 문자열입니다. 🎜🎜예:🎜

🎜rrreee🎜🎜🎜위 프로그램 명령문은 다음을 출력합니다: 1010, 110010🎜🎜🎜3.2 10진수에서 8진수로:🎜🎜🎜함수: decoct(int $number) ) 🎜🎜@param $number 변환할 십진수, 변환할 수 있는 최대값은 십진수로 4294967295 이고, 달임() 결과는 "37777777777"입니다. 🎜@return 주어진 $number 매개변수의 8진수 표현이 포함된 문자열을 반환합니다. 🎜🎜🎜함수 설명: 🎜🎜🎜 decoct() 함수가 변환할 수 있는 최대 소수 값은 4294967295이고, 결과는 "37777777777"입니다. 🎜🎜예: 🎜

🎜rrreee🎜🎜🎜위 프로그램 명령문은 12, 62🎜🎜🎜3.3의 순서로 출력됩니다. 10진수에서 16진수로: 🎜🎜🎜함수: dechex( int $number)🎜🎜@param $number 변환할 10진수입니다. 🎜@return 주어진 $number 매개변수의 16진수 표현이 포함된 문자열을 반환합니다. 🎜🎜🎜함수 설명: 🎜🎜🎜 dechex() 함수가 변환할 수 있는 최대 십진수 값은 다음과 같습니다: PHP_INT_MAX*2 +/- 1. 32비트 시스템에서는 십진수로 4294967295입니다. , 이는 dechex()의 결과가 ffffffff입니다. 🎜

注意:PHP的Integer类型是有符号的,但是dechex()只能处理无符号整数,负整数会以无符号来处理。

范例:

<?php
  echo dechex ( 10 ) . "\n" ;
  echo dechex ( 58 );

以上程序语句会依次输出:a, 3a

4.十六进制:

4.1.十六进制转二进制:

函数:hex2bin(string $data);   转换十六进制字符串为二进制字符串

@param  $data  使用十六进制表示的数据。
@return    返回给定数据的二进制字符串或者在失败时返回FALSE。

函数说明:

如果输入的十六进制字符串是奇数长度或者是无效的十六进制字符串,则会抛出一个E_WARNING级别的错误。

范例:

<?php
  $hex = hex2bin ( "6368656e67206475" );
  echo $hex;

以上程序语句会输出:cheng du

4.2十六进制转十进制:

函数:hexdec(string $hex_string);   转换十六进制字符串为二进制字符串

@param  $hex_string 将要转换的十六进制的字符串。
@return    返回与$hex_string参数所表示的十六进制数等值的十进制数。

函数说明:

hexdec()会忽略它遇到的任意非十六进制的字符。

PHP 4.1.0 开始,该函数可以处理 integer大数字,这种情况下,它会返回float类型。

范例:

<?php
  var_dump ( hexdec ( "See" ));
  var_dump ( hexdec ( "ee" ));
  // 上面两个都输出: "int(238)"
  var_dump ( hexdec ( "that" )); // 输出"int(10)"
  var_dump ( hexdec ( "a0" )); // 输出"int(160)"
  //通过上面的例子可以看出来:hexdec()会忽略它遇到的任意非十六进制的字符。

5.任意进制转换的base_convert() 函数:

函数:base_convert(string $number, int $frombase, int $tobase)

@param $number 将要转换的的数。
@param  $frombase参数$number的进制。
@param  $tobase 将要转换成的进制。
@return   返回一个包含$number以$tobase进制表示的字符串。

函数说明:

$number本身的进制由$formbase来指定。
$formbase和$tobase都只能是2和36(包括2和36)之间的整数值。

注意:由于使用内部的 "double" 或 "float" 类型,base_convert()的操作可能会导致大数值中的精度丢失。

范例:

<?php
  $hexadecimal = &#39;A37334&#39; ;
  echo base_convert ( $hexadecimal , 16 , 2 );
  //print 101000110111001100110100
  echo base_convert ( $hexadecimal , 16 , a);
  //print 10711860

以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

php简单实现数组分页的方法_php技巧

php使用ffmpeg获取视频信息并截图的实现方法_php技巧

thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决_php技巧

위 내용은 PHP에서 10진수, 2진수, 8진수, 16진수 변환 관련 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.