精华内容
下载资源
问答
  • 二进制转16进制补零
    2021-04-20 03:18:37

    php教程

    /**

    *十进制转二进制、八进制、十六进制 不足位数前面补零*

    *

    * @param array $datalist 传入数据array(100,123,130)

    * @param int $bin 转换的进制可以是:2,8,16

    * @return array 返回数据 array() 返回没有数据转换的格式

    * @copyright chengmo qq:8292669

    */

    function decto_bin($datalist,$bin)

    {

    static $arr=array(0,1,2,3,4,5,6,7,8,9,'a','b','c','d','e','f');

    if(!is_array($datalist)) $datalist=array($datalist);

    if($bin==10)return $datalist; //相同进制忽略

    $bytelen=ceil(16/$bin); //获得如果是$bin进制,一个字节的长度

    $aoutchar=array();

    foreach ($datalist as $num)

    {

    $t="";

    $num=intval($num);

    if($num===0)continue;

    while($num>0)

    {

    $t=$arr[$num%$bin].$t;

    $num=floor($num/$bin);

    }

    $tlen=strlen($t);

    if($tlen%$bytelen!=0)

    {

    $pad_len=$bytelen-$tlen%$bytelen;

    $t=str_pad("",$pad_len,"0",str_pad_left).$t; //不足一个字节长度,自动前面补充0

    }

    $aoutchar[]=$t;

    }

    return $aoutchar;

    }

    更多相关内容
  • php /** *十进制转二进制、八进制、十六进制 不足位数前面补零* * * @param array $datalist 传入数据array(100,123,130) * @param int $bin 转换的进制可以是:2,8,16 * @return array 返回数据 array() 返回没有...
  • python输出16进制不带0x补零,整数转16进制,字符串转16进制在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性。例如调试服务端刚接到的二进制数据(里面包含很多非可见字符,也就是...

    python输出16进制不带0x补零,整数转16进制,字符串转16进制

    在开发中,我们偶尔会遇到需要将数据通过控制台打印出来,以检查数据传输的准确性。例如调试服务端刚接到的二进制数据(里面包含很多非可见字符,也就是ascii码之外的字节值,或是字节值不是字母和数字的,是一些特殊符号),如物联网的mqtt协议的信息,以及我们自定义的二进制应用协议,而不是基于可见字符或json组装的信息流。但我们希望看到的是类似这样的信息“0a 53 49 b7 fc 2e”。

    这些二进制数据如果直接用print()函数打印,则在控制台看到的是以字节值代表的字符形式,看到的很多就是乱码。如果用python里的hex()函数转一下再依次输出,会在每个前面都带有“0x”字符,并且01会打印成1,看起来就很不整齐,感觉比较乱,并且打印的时候要人为在每个字节后面加入空格才能分开字节。

    经过实践,我们可以通过格式化输出将字节值变成16进制字符后,再用join()函数输出,就可以实现我们要的效果了,想打印字符串的ascii值也可以,只不过先用ord()函数转一下,下面是我封装的两个函数,分别对应字节类型和字符串类型的输出,调试通过,仅供参考。

    打印字节类型的:

    # 字节列表以16进制格式打印数据

    def print_bytes_hex(data):

    lin = ['%02x' % i for i in data]

    print(" ".join(lin))

    # 测试字节列表,这也是网络传输收到的原始类型

    arr = [0x4b, 0x43, 0x09, 0xa1, 0x01, 0x02, 0xab, 0x4a, 0x43]

    print_bytes_hex(arr)

    '''

    控制台输出:

    4b 43 09 a1 01 02 ab 4a 43

    '''

    打印字符串类型的:

    # 字符串或字符列表以16进制格式打印数据

    def print_string_hex(data):

    lin = ['%02x' % ord(i) for i in data]

    print(" ".join(lin))

    # 测试字符串类型

    arr = 'work'

    print_string_hex(arr)

    '''

    控制台输出:

    57 6f 72 6b

    '''

    如果我们是开发物联网的项目,涉及到信令需要与硬件开发人员交流的时候,硬件那边基本都是以16进制描述的,所以在服务端输出格式统一的数据流格式,方便大家交流。

    上面的实现也可以用循环打印(在打印的时候格式化和加空格)实现,但是写起来略显臃肿,但是不用生成新的列表,对瞬间内存占用有利(抱歉,写硬件代码留下的习惯,总是会想到内存占用,因为单片机的资源实在有限)大家可以根据这个自己改进。

    希望与广大网友互动??

    点此进行留言吧!

    展开全文
  • public class Main2 { public static void main(String[] args) { /** ... // 十进制转成十六进制: String string = Integer.toHexString(i); // 十进制转成八进制 String string1 = Intege.
    • 先看结果(文末附代码)
      在这里插入图片描述
    • 附代码测试
    public class Main2 {
        public static void main(String[] args) {
            /**
             * int 转 String
             */
            int i = 10;
            // 十进制转成十六进制:
            String string = Integer.toHexString(i);
            // 十进制转成八进制
            String string1 = Integer.toOctalString(i);
            // 十进制转成二进制
            String string2 = Integer.toBinaryString(i);
            // 十六进制转成十进制
            Integer integer = Integer.valueOf("FFFF", 16);
            // 八进制转成十进制
            Integer integer1 = Integer.valueOf("123", 8);
            // 二进制转十进制
            String string3 = Integer.valueOf("0101", 2).toString();
    
            /**
             * String 转 int
             */
            int i1 = Integer.parseInt("FF", 16);
            int i2 = Integer.parseInt("1100110", 2);
            int i3 = Integer.parseInt("Kona", 27);
            System.out.println();
        }
    }
    
    • 超长2进制转10进制
        /**
         * 二进制转十进制
         *
         * @param str
         * @return
         */
        public static BigDecimal binaryToString(String str) {
            BigDecimal bigDecimal = new BigDecimal(0);
            char[] chars = str.toCharArray();
            for (int i = chars.length; i > 0; i--) {
                BigDecimal temp = new BigDecimal(1);
                if (chars[i - 1] == '1') {
                    for (int j = 0; j < str.toCharArray().length - i; j++) {
                        temp = temp.multiply(new BigDecimal(2));
                    }
                    bigDecimal = bigDecimal.add(temp);
                }
            }
            return bigDecimal;
        }
    
    • 进制补零
        /**
         * 左右补0
         *
         * @param str
         * @param strLength
         * @return
         */
        public static String addZeroForNum(String str, int strLength) {
            int strLen = str.length();
            if (strLen < strLength) {
                while (strLen < strLength) {
                    StringBuffer sb = new StringBuffer();
                    sb.append("0").append(str);// 左补0
                    // sb.append(str).append("0");//右补0
                    str = sb.toString();
                    strLen = str.length();
                }
            }
            // 自己实现工具类
            return str;
            // 调用jdk方法
    //        return String.format("%"+strLength+"s", Integer.toBinaryString(Integer.parseInt(str))).replace(' ', '0'); // 仅能左侧添加
    //        return StringUtils.leftPad(Integer.toBinaryString(Integer.parseInt(str)), strLength, '0'); // 左侧添加
    //        return StringUtils.rightPad(Integer.toBinaryString(Integer.parseInt(str)), strLength, '0');// 右侧添加
        }
    
    • 位运算
    • 以题为例
      在这里插入图片描述
        // 法二: 位运算
        public static void main(String[] args) throws IOException {
             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
             String str = null;
             while ((str = br.readLine()) != null) {
                 String[] ip = str.split("\\.");
                 long num = Long.parseLong(br.readLine());
                 //转10进制
                 // 利用按位或运算,|按位或和&按位与计算方式都是转换二进制再计算
                 // 左边高位的 ip地址 移位后低位的位置一定为零,所以和未移位的 ip地址 进行或运算一定为低位的数字
                 // 如:2.2 -> 00000010.00000010
                 // 移位后     0000001000000000|00000010 -> 0000001000000010
                 System.out.println(Long.parseLong(ip[0]) << 24 | Long.parseLong(ip[1]) << 16 |
                                    Long.parseLong(ip[2]) << 8 | Long.parseLong(ip[3]));
                 //转ip地址
                 StringBuilder sb = new StringBuilder();
                 // 移位后与255做与运算(保证高于此位置的数字和0做与运算),只保留此次位置范围的
                 // 如:299867972
                 // 移位后-> 17.4575.1171359.299867972
                 // 和255与运算后-> 17.223.159.68
                 sb.append(String.valueOf((num >> 24) & 255)).append(".").append(String.valueOf((num >> 16) & 255)).append(".").append(String.valueOf((num >> 8) & 255)).append(".").append(String.valueOf(num & 255));
                 System.out.println(sb.toString());
             }
         }
    
    展开全文
  • Javascript 10进制转16进制补0 ,16进制转10进制Javascript 10进制转16进制补0 ,16进制转10进制10进制转16进制补016进制10进制 Javascript 10进制转16进制补0 ,16进制转10进制 10进制转16进制补0 // 10进制转16进制...

    Javascript 10进制转16进制补0 ,16进制转10进制

    10进制转16进制补0

    // 10进制转16进制补0
    function dec2hex(dec, len) {//10进制转16进制补0
          var hex = "";
          while( dec ) {
          var last = dec & 15;
          hex = String.fromCharCode(((last>9)?55:48)+last) + hex;
          dec >>= 4;
          }
          if(len) {
          while(hex.length < len) hex = '0' + hex;
          }
          return hex;
      }
    

    16进制转10进制

    // 10进制转16进制补0
    function string_hex2int(hex) {//16进制转10进制
        var len = hex.length, a = new Array(len), code;
        for (var i = 0; i < len; i++) {
            code = hex.charCodeAt(i);
            if (48<=code && code < 58) {
                code -= 48;
            } else {
                code = (code & 0xdf) - 65 + 10;
            }
            a[i] = code;
        }
        
        return a.reduce(function(acc, c) {
            acc = 16 * acc + c;
            return acc;
        }, 0);
      }
    
    展开全文
  • 2进制8进制(二进制转8进制公式)

    千次阅读 2021-07-31 01:50:55
    001,分别向左右每三位二进制数合成. 或每一位八进制数展成三位二进制数.告诉你一个简单的道理 1...二进制的怎么转换16进制 八进制怎么转换十六进制方法一:把二进制转换成十进制,再把十进制转换成其他进制。方法二...
  • 进制问题
  • 十进制转化为二进制 不补0 向左补齐0 十进制转换为十六进制 不补0 自动补0 十进制转化为二进制 不补0 Convert.ToString(d, 2);// d为int类型 以4为例,输出为100 向左补齐0 Convert....
  • 二进制转八进制算法为了把换算为二进制,将每一个八进制数字替换成表2-2中对应的三位。例如,八进制123换算成结果就是001010011:表2-2 二进制/八进制换算表为了将一个换算为八进制,只需将二进制串划分成每三个位一...
  • 一、十进制整数其它进制(除基取余法) 二、十进制小数其它进制(乘基取整法) 三、十六进制转二进制 四、八进制转二进制
  • Java十六进制转二进制

    2021-04-23 20:56:02
  • 16进制 2进制 - bin(int(x, 8)) bin(int(x, 10)) bin(int(x, 16)) 8进制 oct(int(x, 2)) - oct(int(x, 10)) oct(int(x, 16)) 10进制 int(x, 2) int(x, 8) ...
  • 注意:使用Integer的方法转换出来的2进制字符串 最高位是没有补零的 ,java的Integer类的toBinaryString()方法转换出来的二进制字符串只会保留最高非零位以后的字符串,不满int类型的32位,所以需要补零。...
  • 二进制和十进制之间的互相转换

    千次阅读 2020-12-21 13:43:57
    希望做好这个笔记后能够牢牢记住十进制转换为二进制十进制转二进制分为整数转二进制,和小数转二进制整数转二进制采用"除2取余,逆序排列"法:1.首先用2整除一个十进制整数,得到一个商和余数2.然后再用2去除得到的...
  • java实现二进制转十六进制

    千次阅读 2017-07-29 22:50:51
    java实现二进制转十六进制
  • 3、二进制转八进制、十六进制 4、八进制转二进制 二、小数转换 1、十进制R进制 2、R进制十进制 在学习四种进制转换之前先了解一下自种进制的特点 十进制: 十进制是Decimal,简写为D 都是以0-9这九个...
  • 程序猿们或许对二进制都不陌生,二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。但是很多人都会将二进制转换成整数,但是如何用二进制表示负数呢?有的人会说,在二进制前面加个负数...
  • 二进制 二进制就是计算机常用的进制,即逢二进一。例如:1010 八进制 八进制即逢八进一。例如:626 ...十进制就是我们在计算中常用的进制,所以就...1.二进制转八进制 拿二进制数10010110举例 首先需要3个二进...
  • 题目:将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff rgb 中每个 , 后面的空格数量不固定 十六进制表达式使用六位小写字母 如果输入不符合 rgb 格式,返回原始输入 思路:为什么要...
  • 四位二进制、十进制、四位十六进制相互转换(高位补零)四位二进制转十进制十进制四位二进制十进制十六进制十进制四位十六进制四位十六进制十进制 四位二进制转十进制 int(i, 2) 十进制四位二进制 '{:04b...
  • 十进制转二进制例题

    2021-06-09 05:38:08
    十进制转二进制 多举几个例子(先谢了。)十进制转二进制简单的来讲,就是把一个十进制的数÷2,一直÷,直到不能除了,就像是1÷2,在十进制转二进制的时候,它的答案为0,没有余数就写0,然后把前面的余数全部合并在...
  • 16进制转byte的问题

    2021-07-28 08:15:12
    本文将介绍16进制转换到byte遇到的一些问题,其中会涉及计算机基础的补码的知识,如果不了解,可以先阅读我的另一篇关于补码的介绍:原码、反码、补码。问题我们先来看一道题byte b = (byte) 0x1E;int i = 0x1E;...
  • php进制转换,十六进制转为二进制,代码:/*** 十六进制转为二进制* edit by www.jbxue.com*/function hex2bin($h){if (!is_string($h)) return null;$r='';for ($a=0; $areturn $r;}?>下面介绍下,php 实现进制...
  • 1、正整数转二进制 要点:除二取余,倒序排列,高位补零。 方法:将正的十进制数除以二,得到的商再除以二,依次类推直至商为0或1时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零。 注:计算机内部表示...
  • js ipv6转二进制补零操作)

    千次阅读 2018-12-17 13:32:48
    有些时候我们需要对ipv6格式进行补零,然后转化为二进制操作 1.首先对ipv6格式进行补零,还原到最初格式的16进制字符串 function ipv6_to_hex(address){ var ipv6_to_16=''; var ipv6_1=[]; ...
  • 二进制 B 表示 二进制计算机常用进制逢二进1 用0和1标识 和十进制对应的值 0=0/00, 1=1/01 2=10 逢二进1 =0进1等10 3=11 4=100 5=101 6=110 7=111 8=1000 9=1001 10=1010 11=1011 12=1100 13=1101 14=1110 15=1111 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,038
精华内容 2,815
热门标签
关键字:

二进制转16进制补零