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

news2024/9/21 16:23: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.coloradmin.cn/o/855891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript基础 第二天

1. 运算符 2. 语句 一.运算符 1.赋值运算符 2.一元运算符 3.比较运算符 4.逻辑运算符 5.运算符优先级 1.1 赋值运算符 概念&#xff1a;对变量进行赋值的运算符 赋值运算符&#xff1a; - * / % 1.2 一元运算符 可以根据表达式的个数&#xff0c;分为一…

数据结构【第4章】——栈与队列

队列是只允许在一端进行插入操作、而在另-端进行删除操作的线性表。 栈 栈与队列&#xff1a;栈是限定仅在表尾进行插入和删除操作的线性表。 我们把允许插入和删除的一端称为栈顶&#xff08;top&#xff09;&#xff0c;另一端称为栈底&#xff08;bottom&#xff09;&…

提升客户满意度的创意项目管理软件推荐!

发现功能强大的工作管理软件&#xff0c;让创意大放异彩。将您团队的愿景变成引人注目的项目。 一、交付总是令人印象深刻的工作 Zoho Projects的创意项目管理软件可帮助您和您的团队在一个地方监督多个项目。使用我们的内置管理工具和模板&#xff0c;花更少的时间在管理上&a…

postman如何添加token

参考博客&#xff1a;https://blog.csdn.net/Mrbignose/article/details/107237581 1.添加token&#xff1a; 2.设置token&#xff1a; 3.发送时携带token&#xff1a;

【JavaEE】懒人的福音-MyBatis框架—介绍、搭建环境以及初步感受

【JavaEE】MyBatis框架要点总结&#xff08;1&#xff09; 文章目录 【JavaEE】MyBatis框架要点总结&#xff08;1&#xff09;1. MyBatis是什么&#xff1f;2. 搭建MyBatis的开发环境2.0 MySQL建库建表2.1 新项目添加MyBatis框架2.2 设置MyBatis的配置2.2.1 设置数据库的连接信…

图像的平移变换之c++实现(qt + 不调包)

1.基本原理 设dx为水平偏移量&#xff0c;dy为垂直偏移量&#xff0c;则平移变换的坐标映射关系为下公式&#xff0c;图像平移一般有两种方式。 1.不改变图像大小的平移&#xff08;一旦平移&#xff0c;相应内容被截掉&#xff09; 1&#xff09;当dx > width、dx < -wi…

【云原生】Kubernetes节点亲和性分配 Pod

目录 1 给节点添加标签 2 根据选择节点标签指派 pod 到指定节点[nodeSelector] 3 根据节点名称指派 pod 到指定节点[nodeName] 4 根据 亲和性和反亲和性 指派 pod 到指定节点 5 节点亲和性权重 6 pod 间亲和性和反亲和性及权重 7 污点和容忍度 8 Pod 拓扑分布约束 官方…

flinksql sink to sr often fail because of nullpoint

flinksql or DS sink to starrocks often fail because of nullpoint flink sql 和 flink ds sink starrocks 经常报NullpointException重新编译代码 并上传到flink 集群 验证&#xff0c;有效 flink sql 和 flink ds sink starrocks 经常报NullpointException 使用flink-sta…

【EI复现】售电市场环境下电力用户选择售电公司行为研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

AWS——04篇(AWS之Amazon S3(云中可扩展存储)-02——EC2访问S3存储桶)

AWS——04篇&#xff08;AWS之Amazon S3&#xff08;云中可扩展存储&#xff09;-02——EC2访问S3存储桶&#xff09; 1. 前言2. 创建EC2实例 S3存储桶3. 创建IAM角色4. 修改EC2的IAM 角色5. 连接EC2查看效果5.1 连接EC25.2 简单测试5.2.1 查看桶内存储情况5.2.2 复制本地文件…

docker中的jenkins之流水线构建

docker中的jenkins之流水线构建项目 1、用node这种方式&#xff08;因为我用pipeline方式一直不执行&#xff0c;不知道为什么&#xff09; 2、创建项目 创建两个参数&#xff0c;一个是宿主端口号&#xff0c;一个是docker中的端口号 3、使用git项目中的Jenkinsfile 4、编写…

Android安卓实战项目(11)—每个步骤带有动画演示功能的线上运动APP,可计算每日运动卡路里(源码在文末)

Android安卓实战项目&#xff08;11&#xff09;—每个步骤带有动画演示功能的线上运动APP&#xff0c;可计算每日运动卡路里&#xff08;源码在文末&#x1f415;&#x1f415;&#x1f415;&#xff09; 【bilibili演示】 https://www.bilibili.com/video/BV1bk4y1g7Wo/?sh…

Vue day01

Vue 1.简介&#xff1a; ​ Vue是一套用于构建用户界面的渐进式框架。与其他大型框架不同的是&#xff0c;Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层&#xff0c;不仅容易上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代化的工…

taro Swiper组件--异形滚动

效果 <SwiperindicatorDots{false}previousMargin50pxnextMargin50pxautoplay{false}interval100onChange{onChangeSwiper} >{[1,2,3].map((item, index) > {return (<SwiperItemkey{item-${index}}><View className{demo-item ${currentIndex index ? ac…

【PCL-6】PCL基于凹凸型的分割算法(LCCP)

凹凸型分割算法适用于颜色类似、棱角分明的物体场景分割。LCCP方法不依赖点云颜色&#xff0c;只使用空间信息和法线信息。 算法流程&#xff1a; 1、基于超体聚类的过分割&#xff1b; 2、在超体聚类的基础上再聚类。 算法思路&#xff1a; 1、基于CC和SC判断凹凸性&…

24.Netty源码之合理管理堆内存

highlight: arduino-light 合理管理 Netty 堆外内存 内存使用目标 •内存占用少(空间) •应用速度快(时间) 即多快好省 对 Java 而言&#xff1a;减少 Full GC 的 STW(Stop the world)时间 内存使用技巧 • 减少对象本身大小 md 例 1&#xff1a;用基本类型就不要用包装类。 例…

程序使用Microsoft.XMLHTTP对象请求https时出错解决

程序中使用Microsoft.XMLHTTP组件请求https时出现如下错误&#xff1a; 出错程序代码示例&#xff1a; strUrl "https://www.xxx.com/xxx.asp?id11" dim objXmlHttp set objXmlHttp Server.CreateObject("Microsoft.XMLHTTP") objXmlHttp.open "…

关于架构与架构师的一些感悟

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/132152177 一、引子 最近在做工作总结的过程中&#xff0c;对于架构与架构师又有了一些新的感悟&#xff0c;本文有感而写&#xff0c;分为四个部分&#xff1a; ● 关于系统架构 ● 关于系统架构师 …

动手学深度学习(三)线性神经网络—softmax回归

分类任务是对离散变量预测&#xff0c;通过比较分类的概率来判断预测的结果。 softmax回归和线性回归一样也是将输入特征与权重做线性叠加&#xff0c;但是softmax回归的输出值个数等于标签中的类别数&#xff0c;这样就可以用于预测分类问题。 分类问题和线性回归的区别&#…

《24海南大学835软件工程考研经验贴》

1.经验之谈 首先&#xff0c;我是一个二战的考生&#xff0c;一战给我带来的经验有几点。第一&#xff0c;数学、专业课这两门越早复习越好&#xff0c;越拖到后面你就会发现来不及了&#xff0c;这学不完&#xff0c;那学不完的。第二、我认为是比较关键的一点&#xff0c;一定…