当前位置: 首页 > news >正文

PHP实现在线进制转换器,10进制,2、4、8、16、32进制转换

1.接口文档 

 

 2.laravel实现代码

 /*** 进制转换计算器* @return \Illuminate\Http\JsonResponse*/public function binaryConvertCal(){$ten = $this->request('ten');$two = $this->request('two');$four = $this->request('four');$eight = $this->request('eight');$sixteen = $this->request('sixteen');$thirty_two = $this->request('thirty_two');$type = intval($this->request('type')) ?: 10;$data = ['ten' => $ten,'two' => $two,'four' => $four,'eight' => $eight,'sixteen' => $sixteen,'thirty_two' => $thirty_two];if ($type == 10 && $ten) {// 1.十进制$data['ten'] = $ten;// 2.将十进制转换二进制$data['two'] = decbin($ten);// 3.十进制转换四进制$data['four'] = $this->decimalToBase($ten, 4);// 4.十进制转换八进制$data['eight'] = decoct($ten);// 5.十进制转换十六进制$data['sixteen'] = dechex($ten);;// 6.十进制转换三十二进制$data['thirty_two'] = $this->base10ToBase32($ten);}if ($type == 2 && $two) {// 1.二进制转换十进制$ten = bindec($two);$data['ten'] = $ten ?: 'NAN';// 2.二进制$data['two'] = $two;// 3.二进制转换为四进制$fourNumber = bindec($two); // 转换为10进制$fourNumber = base_convert($fourNumber, 10, 4); // 转换为4进制$data['four'] = $fourNumber ?: 'NAN';// 4.二进制转换为八进制$eightNumber = bindec($two); // 转换为10进制$eight = base_convert($eightNumber, 10, 8); // 转换为8进制$data['eight'] = $eight ?: 'NAN';// 5.二进制转换为十六进制$sixteenNumber = bindec($two); // 转换为10进制$sixteen = base_convert($sixteenNumber, 10, 16); // 转换为16进制$data['sixteen'] = $sixteen ?: 'NAN';// 6.二进制转换为三十二进制$decimalNumber = bindec($two); // 将二进制数字转换为十进制$thirty_two = base_convert($decimalNumber, 10, 32); // 将十进制数字转换为32进制$data['thirty_two'] = $thirty_two ?: 'NAN';}if ($type == 4 && $four) {// 1.四进制转换十进制$ten = $this->base4_to_decimal($four);$data['ten'] = $ten ?: 'NAN';// 2.四进制转换为二进制$two = $this->base4_to_binary($four);$data['two'] = $two ?: 'NAN';// 3.四进制$data['four'] = $four;// 4.四进制转换为八进制$eight = $this->base4_to_octal($four);$data['eight'] = $eight ?: 'NAN';// 5.四进制转换为十六进制$sixteen = $this->base4_to_hexadecimal($four);$data['sixteen'] = $sixteen ?: 'NAN';// 6.四进制转换为三十二进制$thirty_two = $this->base4_to_base32($four);$data['thirty_two'] = $thirty_two ?: 'NAN';}if ($type == 8 && $eight) {// 1. 8进制转换为10进制$ten = octdec($eight);$data['ten'] = $ten ?: 'NAN';// 2. 8制转换为二进制$two = base_convert($eight, 8, 2);$data['two'] = $two ?: 'NAN';// 3. 8进制转换为4进制$four = base_convert($eight, 8, 4);$data['four'] = $four ?: 'NAN';// 4. 8进制$data['eight'] = $eight;// 5. 8进制转换为16进制$sixteen = base_convert($eight, 8, 16);$data['sixteen'] = $sixteen ?: 'NAN';// 6. 8进制转换为32进制$base32Chars = '0123456789ABCDEFGHIJKLMNOPQRSTUV';$base32Number = '';$decimalNumber = octdec($eight);while ($decimalNumber > 0) {$remainder = $decimalNumber % 32;$base32Number = $base32Chars[$remainder] . $base32Number;$decimalNumber = intdiv($decimalNumber, 32);}$data['thirty_two'] = $base32Number ?: 'NAN';}if ($type == 16 && $sixteen) {// 1. 将16进制转换为10进制$ten = hexdec($sixteen);$data['ten'] = $ten ?: 'NAN';// 2. 16制转换为2进制$two = base_convert($sixteen, 16, 2);$data['two'] = $two ?: 'NAN';// 3. 16进制转换为4进制$four = base_convert($sixteen, 16, 4);$data['four'] = $four ?: 'NAN';// 4. 16进制转换为8进制$eight = base_convert($sixteen, 16, 8);$data['eight'] = $eight;// 5. 16进制$data['sixteen'] = $sixteen;// 6. 将16进制转换为32进制$thirty_two = $this->hexToBase32($sixteen);$data['thirty_two'] = $thirty_two ?: 'NAN';}if ($type == 32 && $thirty_two) {// 1. 将32进制转换为10进制$ten = $this->base32ToDecimal($thirty_two);$data['ten'] = $ten ?: 'NAN';// 2. 32制转换为2进制$two = $this->base32ToBinary($thirty_two);$data['two'] = $two ?: 'NAN';// 3. 32进制转换为4进制$four = $this->base32ToQuaternary($thirty_two);$data['four'] = $four ?: 'NAN';// 4. 32进制转换为8进制$eight = $this->base32ToOctal($thirty_two);$data['eight'] = $eight;// 5. 32进制转换为16进制$data['sixteen'] = $this->base32ToHex($thirty_two);// 6. 32进制$data['thirty_two'] = $thirty_two;}return $this->jsonSuc(['result' => $data]);}/*** 十进制转换* @param $decimal* @param $base* @return string*/function decimalToBase($decimal, $base){$result = '';while ($decimal > 0) {$remainder = $decimal % $base;$result = $remainder . $result;$decimal = (int)($decimal / $base);}return $result;}/*** 十进制转换为三十二* @param $num* @return string*/function base10ToBase32($num){$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUV';$base32 = '';while ($num > 0) {$remainder = $num % 32;$base32 = $chars[$remainder] . $base32;$num = (int)($num / 32);}return ($base32 === '') ? '0' : $base32;}/*** 4转换为10进制* @param $num* @return float|int*/function base4_to_decimal($num){$decimal = 0;$base = 4;$num_length = strlen($num);for ($i = 0; $i < $num_length; $i++) {$digit = intval($num[$i]);$decimal += $digit * pow($base, $num_length - $i - 1);}return $decimal;}/*** 4转换为2进制* @param $num* @return string*/function base4_to_binary($num){$decimal = $this->base4_to_decimal($num);return decbin($decimal);}/*** 4转换为8进制* @param $num* @return string*/function base4_to_octal($num){$decimal = $this->base4_to_decimal($num);return decoct($decimal);}/*** 4转换为16进制* @param $num* @return string*/function base4_to_hexadecimal($num){$decimal = $this->base4_to_decimal($num);return dechex($decimal);}/*** 4转换为32进制* @param $num* @return string*/function base4_to_base32($num){$decimal = $this->base4_to_decimal($num);return base_convert($decimal, 10, 32);}/*** 16转32进制* @param $hex* @return string*/function hexToBase32($hex){$base32Chars = '0123456789ABCDEFGHIJKLMNOPQRSTUV';$result = '';// 将十六进制字符串拆分成两个字符一组$hexPairs = str_split($hex, 2);// 将每个十六进制对转换为十进制,并将其转换为五位长的三十二进制数foreach ($hexPairs as $pair) {$dec = hexdec($pair);$base32 = '';while ($dec >= 32) {$rem = $dec % 32;$base32 = $base32Chars[$rem] . $base32;$dec = (int)($dec / 32);}$base32 = $base32Chars[$dec] . $base32;$result .= $base32;}return $result;}/*** 将32进制转换为10进制* @param string $num 32进制字符串* @return int 转换后的10进制数值*/function base32ToDecimal($num){$base32_chars = "0123456789abcdefghijklmnopqrstuv";$dec = 0;$len = strlen($num);for ($i = 0; $i < $len; $i++) {$pos = strpos($base32_chars, $num[$i]);$dec = 32 * $dec + $pos;}return $dec;}/*** 将32进制转换为2进制* @param string $num 32进制字符串* @return string 转换后的2进制字符串*/function base32ToBinary($num){$dec = $this->base32ToDecimal($num);$binary = decbin($dec);return $binary;}/*** 将32进制转换为4进制* @param string $num 32进制字符串* @return string 转换后的4进制字符串*/function base32ToQuaternary($num){$dec = $this->base32ToDecimal($num);$quaternary = base_convert($dec, 10, 4);return $quaternary;}/*** 将32进制转换为8进制* @param string $num 32进制字符串* @return string 转换后的8进制字符串*/function base32ToOctal($num){$dec = $this->base32ToDecimal($num);$octal = decoct($dec);return $octal;}/*** 将32进制转换为16进制* @param string $num 32进制字符串* @return string 转换后的16进制字符串*/function base32ToHex($num){$dec = $this->base32ToDecimal($num);$hex = dechex($dec);return $hex;}

http://www.lryc.cn/news/118782.html

相关文章:

  • 报错 | Spring报错详解
  • PHP最简单自定义自己的框架数据库封装调用(五)
  • 使用Redis来实现点赞功能的基本思路
  • 【黑马头条之app端文章搜索ES-MongoDB】
  • Nginx安装以及LVS-DR集群搭建
  • 后端开发9.商品类型模块
  • spring框架自带的http工具RestTemplate用法
  • 【flink】Checkpoint expired before completing.
  • 【论文阅读】NoDoze:使用自动来源分类对抗威胁警报疲劳(NDSS-2019)
  • 【ARM64 常见汇编指令学习 16 -- ARM64 SMC 指令】
  • uprobe trace多线程mutex等待耗时
  • Linux 和 MacOS 中的 profile 文件详解(一)
  • 不用技术代码,如何制作成绩查询系统?
  • flinksql sink to sr often fail because of nullpoint
  • 达梦数据库:Error updating database. Cause: dm.jdbc.driver.DMException: 数据未找到
  • 电脑怎么查看连接过的WIFI密码(测试环境win11,win10也能用)
  • 处理数据部分必备代码
  • layui 集成 ztree异步加载
  • LeetCode面向运气之Javascript—第27题-移除元素-98.93%
  • 谷歌云 | 电子商务 | 如何更好地管理客户身份以支持最佳的用户体验
  • 行业追踪,2023-08-09
  • 视图、存储过程、函数、触发器
  • 数学建模学习(10):遗传算法
  • 私域流量整合:社群裂变的综合策略
  • Redis的RDB持久化
  • 三、MySql表的操作
  • 【模型加速部署】—— Pytorch自动混合精度训练
  • 【Qt】信号槽的三种连接方式
  • Jtti:Ubuntu静态IP地址怎么配置
  • iconfont 使用