PHPで10進数、2進数、8進数、16進数の変換に関連する関数を実装する方法

墨辰丷
リリース: 2023-03-27 17:14:01
オリジナル
3051 人が閲覧しました

この記事では、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 パラメータで表される 2 進数に相当する 10 進数を返します。 🎜🎜🎜関数の説明: 🎜🎜🎜bindec()サイズの必要に応じて、2 進数を整数型または浮動小数点型に変換します。 🎜bindec() は、すべての $binary_string 値を符号なし整数として解釈します。これは、bindec() 関数がその最上位ビットを符号ビットではなく大きさとして扱うためです。 [つまり、最上位ビット 0 または 1 は、bindec() によって + または - として表現されませんが、1 は 1、0 は 0 として表現されます。他のデータ型を使用すると、予期しない結果が生じる可能性があります。 🎜🎜例:🎜

🎜

<?php
  echo dechex ( 10 ) . "\n" ;
  echo dechex ( 58 );
ログイン後にコピー
ログイン後にコピー
🎜🎜🎜上記のプログラムステートメントは、18、6、15 の順序で出力されます🎜🎜🎜1.2. 2 進数から 16 進数への変換🎜🎜🎜 関数: bin2hex ( string $str)🎜🎜@param $str 変換される ASCII 文字の文字列。 🎜@return 変換された文字列の 16 進値を返します。 🎜🎜🎜関数の説明: 🎜🎜🎜bin2hex() 関数は、ASCII 文字の文字列を 16 進数値に変換します。文字列は、pack() 関数を使用して逆変換できます。 🎜bin2hex() 関数変換では、ニブル優先度の高いバイト モードが使用されます。 🎜🎜例: 🎜🎜(1) bin2hex() 「成都」を 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() は整数の大きな数値を処理できますが、この場合は float 型を返します。 🎜🎜例: 🎜

🎜

<?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 Converted 10 進数の場合、変換できる最大値は 10 進数で 4294967295 で、10 進数の結果は 32 個の 1 の文字列になります。 🎜@return 10 進数変換後のバイナリ文字列を返します。 🎜🎜🎜関数の説明: 🎜🎜🎜 decbin() 関数が変換できる最大 10 進数値は 4294967295 で、結果は 32 個の 1 の文字列になります。 🎜🎜例:🎜

🎜rrreee🎜🎜🎜上記のプログラムステートメントは出力します: 1010, 110010🎜🎜🎜3.2. 10 進数から 8 進数への変換:🎜🎜🎜Function: decoct(int $number) ) 🎜🎜@param $number 変換する10進数、変換できる最大値は10進数で4294967295、およびdecoct()結果は「37777777777」です。 🎜@return 指定された $number パラメータの 8 進数表現を含む文字列を返します。 🎜🎜🎜関数の説明: 🎜🎜🎜 decoct() 関数が変換できる最大 10 進数値は 4294967295 で、結果は「37777777777」です。 🎜🎜例: 🎜

🎜rrreee🎜🎜🎜上記のプログラムステートメントは、12、62🎜🎜🎜3.3. 10 進数から 16 進数へ: 🎜🎜🎜Function: dechex( int) $number)🎜🎜@param $number 変換される 10 進数。 🎜@return 指定された $number パラメータの 16 進表現を含む文字列を返します。 🎜🎜🎜関数の説明: 🎜🎜🎜 dechex() 関数が変換できる最大 10 進値は、PHP_INT_MAX*2 +/- 1 です。32 ビット システムでは、10 進数で 4294967295 です。 、 < code>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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!