ホームページ > バックエンド開発 > PHPチュートリアル > PHPの16進数を16進数に変換します

PHPの16進数を16進数に変換します

WBOY
リリース: 2016-06-23 14:08:28
オリジナル
1769 人が閲覧しました

16 進数は次のように配置されます:

	$dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
ログイン後にコピー

高精度の数学関数を使用しないでください。


ディスカッションに返信します。

メーデーに遊びに行きました???

<?php	$dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';	//$num=3844;//intval($_GET['hex'],16);		for($test=0;$test<3844;$test++){		$num=$test;		$index=0;		do{			$cur=$num%62;			$output[$index]=$dict[$cur];			//echo $output[$index].' ';			$num=floor($num/62);			$index++;			//echo $cur.' ';		}while($num);		$output[$index]='!';		$index--;		$aide=0;		while($index>$aide){			$tmp=$output[$index];			$output[$index]=$output[$aide];			$output[$aide]=$tmp;			$aide++;			$index--;		}		$index=0;		while($output[$index]<>'!'){			echo $output[$index];			$index++;		}		if(($test+1)%62==0)			echo '<br />';	}?>
ログイン後にコピー

私はPHPにあまり詳しくなく、C言語の観点から考えているところが多いので、非常にぎこちないところもあります。さらに、私が書いたものにエラーがないことを保証することはできません。PHP には非常に曖昧な部分が多くあります。 forは3桁以下の62桁の数字は問題ないようです。

さらに、配列を文字列に変換する方法がわかりません。自分で行うことができます。私はもうやりたくないです。

値の範囲が整数の範囲を超える場合にも問題が発生します。より大きな数値を変換したい場合は、これを参照してください:

http://www.php.net/manual/en/book.bc.php


値の範囲が整数値の範囲を超える場合にも問題が発生します。 。より大きな数値を変換したい場合は、これを見てください:

http://www.php.net/manual/en/book.bc.php 何をしているのですか?

高精度の数学関数は使用しないでください、サーバーが無効にしているため、すでに人々が言っ​​ています

値の範囲が整数の範囲を超える場合にも問題が発生します。より大きな数値を変換したい場合は、これを見てください:

http://www.php.net/manual/en/book.bc.php どのような混乱を起こしているのでしょうか?
高精度の数学関数を使用しないでください、サーバーがそれらを無効にしているため、人々はすでに言っています
忘れていました、私はこれらの数行のコードを長い間書いていましたが、その後、大規模な関数を試したときに何か問題が発生したことがわかりました番号。

先生、変換したい16進数は整数データの最大値を超えませんか?

これには BCMath は必要ないかもしれませんが、私は試していません:

http://phpseclib.bantux.org/code_coverage/220/PHP-5.2/Math_BigInteger.php.html


先生、あなたが知りたい 16 進数変換はプラスチックデータの最大値を超えていますか?

いいえ、その 16 進数は実際には md5 暗号化の結果です

先生、変換したい 16 進数は整数データの最大値を超えますか?


いいえ、その 16 進数は実際には md5 暗号化の結果です
MD5 のこれほど多くの桁が整数の表現範囲を超えないということがどうしてあり得ますか?
上記のリンクのコードはダウンロードできないようです。これはダウンロードできます:
http://pear.php.net/package/Math_BigInteger/download

いいえ、その 16 進数は実際には md5 暗号化された結果です。

では、なぜ基数 62 なのでしょうか? Base64ってダメなの?

MD5 の結果を圧縮したいだけなので
テストコード

$c = md5('ffff');echo $c, PHP_EOL;echo $r = convert($c, 64), PHP_EOL;echo convert($r, -64);function convert($s, $to=64) {  $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@=';  $res = '';  $b = '';  if($to > 0) {    $to = ceil(log($to, 2));//调整到2的k次方    for($i=0; $i<strlen($s); $i++) $b .= sprintf('%04b', hexdec($s{$i}));    while(strlen($b) >= $to) {      $res = $dict{bindec(substr($b, -$to))} . $res;      $b = substr($b, 0, -$to);    }    $res = $dict{bindec($b)} . $res;    return $res;  }  $to = ceil(log(-$to, 2));  for($i=0; $i<strlen($s); $i++) $b .= sprintf("%0{$to}b", strpos($dict, $s{$i}));  while(strlen($b) > 4) {    $res = $dict{bindec(substr($b, -4))} . $res;    $b = substr($b, 0, -4);  }  if(bindec($b)) $res = $dict{bindec($b)} . $res;  return $res;}
ログイン後にコピー
ログイン後にコピー
ce926d8c0356205276a45266d361161
3IWiroM3ly1itGhipJdx5x
ece926d8c0356205276a45266d361161


先進的すぎます。小柄な老人が通り過ぎた。しかし、高精度数学というキーワードも学びました。今夜勉強します。

機能があるようで、押したいものを押して回すことができます。

いいえ、その 16 進数は実際には md5 暗号化の結果です

では、なぜ 16 進数なのでしょうか? Base64ってダメなの?
MD5 の結果を圧縮したいだけなので
テストコード

$c = md5('ffff');echo $c, PHP_EOL;echo $r = convert($c, 64), PHP_EOL;echo convert($r, -64);function convert($s, $to=64) {  $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@=';  $res = '';  $b = '';  if($to > 0) {    $to = ceil(log($to, 2));//调整到2的k次方    for($i=0; $i<strlen($s); $i++) $b .= sprintf('%04b', hexdec($s{$i}));    while(strlen($b) >= $to) {      $res = $dict{bindec(substr($b, -$to))} . $res;      $b = substr($b, 0, -$to);    }    $res = $dict{bindec($b)} . $res;    return $res;  }  $to = ceil(log(-$to, 2));  for($i=0; $i<strlen($s); $i++) $b .= sprintf("%0{$to}b", strpos($dict, $s{$i}));  while(strlen($b) > 4) {    $res = $dict{bindec(substr($b, -4))} . $res;    $b = substr($b, 0, -4);  }  if(bindec($b)) $res = $dict{bindec($b)} . $res;  return $res;}
ログイン後にコピー
ログイン後にコピー
ece926d8c0356205276a45266d361161
3IWiroM3ly1itGhipJdx5x
ece926d8c0356205276a45266d361161



実は、高さはあるのですが、16ビットMD5を使用して4桁64桁の短縮URLを作りたいのです。衝突の可能性

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート