精华内容
下载资源
问答
  • Java byte[] 字节数组 转 二进制 八进制 十进制 十六进制字符串

    【前言】

    Java中很多时候需要将byte[]转为各种进制的字符串显示,从2,8,10,16到比较高级的base64(编码),

    至于什么时候需要这样,当你遇到这样的问题就知道了。


    【代码】

    进制转换比较简单,直接上代码,编码转换见其他文章。例如这个

    import java.math.BigInteger;  
      
    public class QEncodeUtil {  
        public static void main(String[] args) {  
            String s = "woaini";  
            byte[] bytes = s.getBytes();  
              
            System.out.println("将woaini转为不同进制的字符串:");  
            System.out.println("可以转换的进制范围:" + Character.MIN_RADIX + "-" + Character.MAX_RADIX);  
            System.out.println("2进制:"   + binary(bytes, 2));  
            System.out.println("5进制:"   + binary(bytes, 5));  
            System.out.println("8进制:"   + binary(bytes, 8));  
            System.out.println("16进制:"  + binary(bytes, 16));  
            System.out.println("32进制:"  + binary(bytes, 32));  
            System.out.println("64进制:"  + binary(bytes, 64));// 这个已经超出范围,超出范围后变为10进制显示  
              
            System.exit(0);  
        }  
          
        /** 
         * 将byte[]转为各种进制的字符串 
         * @param bytes byte[] 
         * @param radix 基数可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制 
         * @return 转换后的字符串 
         */  
        public static String binary(byte[] bytes, int radix){  
            return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数  
        }  
    }  




    【输出】

    将woaini转为不同进制的字符串:  
    可以转换的进制范围:2-36  
    2进制:11101110110111101100001011010010110111001101001  
    5进制:114203022342344442242  
    8进制:3566754132267151  
    16进制:776f61696e69  
    32进制:3ndtgmirj9  
    64进制:131320259374697  




    展开全文
  • 二进制十六进制 二进制:每位只能用0,1表示; 二进制数相加二进制到十进制的转换; 十六进制:每位只能用[0,15]来表示,其中A~F表示10,11,12,13,14,15 - 十六进制与二进制之间的转化:4位二进制表示一个16...

    二进制十六进制

    • 二进制:每位只能用0,1表示;
      这里写图片描述

    • 二进制数相加

    这里写图片描述

    • 二进制到十进制的转换;
      这里写图片描述

    • 十六进制:每位只能用[0,15]来表示,其中A~F表示10,11,12,13,14,15

    这里写图片描述
    - 十六进制与二进制之间的转化:4位二进制表示一个16进制;
    这里写图片描述
    - 十六进制与10进制的转化;

    这里写图片描述


    这里写图片描述


    计算机的数据存储

    • Bit:每位计算机用bit来存储,可以存储0,1;
    • Byte:每8个bit是一个Byte,字节,Byte是存储的最小单位;
    • 字:2个字节来存储二进制数据,16个Bit的容量;
    • 双字:4个字节来存储二进制数据32个Bit的容量;
    • 四字:8个字节来存储二进制数据64个Bit的容量;
    • 俩位16进制正好是1个字节,所以很多二进制编辑器都用16进制来表示;
    • -

    计算机的数据表示

    • 无符号整数,所有的bit都用来表示数据的大小,不带符号,既不能表示负数;
    • 有符号数:最高位的bit表示符号,剩下的bit表示数据;
      正数:最高为用0,后面是数据部分;
      这里写图片描述
      负数:最高位是1,数据部分是正数的二进制取反以后再+1;
      这里写图片描述

      -正数负数相加=0
      这里写图片描述

    • 小数
      科学计数法的方式来存储小数;
      4个字节为单精度小数,8个字节的为双精度小数;

    字符

    计算机是没有办法直接存储字符的,0,1;


    计算机只能存放数据,所以必须要规定好数据到对应字符的映射;


    数据到字符的映射,叫做编码–>将数据当做字符,然后使用这个编码对照表,翻译出来;;

    • Ascii编码:英文字符对照编码 ->一个字节就能搞定;
    • 这里写图片描述
    • utf8编码:大部分的文字的编码;
    • 这里写图片描述
    • 其他编码;

    不是说计算机不能直接表示字符吗?那为什么printf能看到字符?

    • 把数据当成字符;
    • 计算机图形学绘制出来的;
    展开全文
  • 二进制十六进制与ASCII码表

    千次阅读 2018-09-14 18:26:32
    二进制十六进制 计算机的数据存储 计算机的数据表示 字符 二进制十六进制 二进制 ------> 每位只能用0,1表示 二进制到十进制的转换 ------> 110 = 1*2^2 + 1*2^1 + 0*2^0 = 6 十六...

    目录

    二进制与十六进制

    计算机的数据存储

    计算机的数据表示

    字符


    二进制与十六进制

    • 二进制   ------>   每位只能用0,1表示
    • 二进制到十进制的转换   ------>   110 = 1*2^2 + 1*2^1 + 0*2^0 = 6
    • 十六进制   ------>   每位只能用[0,15]来表示,A,B,C,D,E,F分别表示10,11,12,13,14,15
    • 十六进制与二进制之间的转换   ------>   每四位二进制表示一个16进制    2^4 = 16
    • 十六进制与十进制的转化   ------>   110 = 1*16^2 + 1*16^1 + 0*16^0 = 272

    计算机的数据存储

    • bit(位)   ------>   计算机里可以存储0、1
    • byte(字节)   ------>   每8个bit是一个byte,byte是存储的最小单位
    • 字   ------>   2个字节来存储二进制数据,16个bit的容量
    • 双字   ------>   4个字节来存储二进制数据,32个bit的容量
    • 四字   ------>   8个字节来存储二进制数据,64个bit的容量
    • 两位16进制正好是一个字节   ------>   很多二进制编辑器都用16进制表示

    计算机的数据表示

    • 无符号整数   ------>    所有的bit都用来表示数据的大小,不带符号,即不能表示负数
    • 有符号整数   ------>   最高位的bit表示符号,剩下的bit表示数据

                                                        正数:最高位是0,后面是数据部分

                                                        负数:最高位是1,数据部分是正数的二进制取反以后再+1

                                                        正3 + 负3 = 0    

    • 小数   ------>   科学计数法的方式来存储小数,4个字节是单精度,8个字节是双精度
    • 二进制   ------>   把它当作什么数来用,它就是什么数

    字符

    • 计算机是没有办法存储字符的   ------>   只能存储0、1
    • 计算机只能存放数据   ------>   要规定好数据对应字符的映射
    • 数据到字符的映射叫编码   ------>   将数据当作字符,然后使用这个编码对照表,翻译出来

                                                                       ASCII编码: 英文字符对照编码   ------>   1个字节就能搞定

                                                                       UTF8编码   ------>   大部分的文字编码

                                                                       其他编码

    • 计算机怎么表示字符   ------>   把数据当成字符,计算机图形学绘制出来
    展开全文
  • 使用Java自带的转换方法也可以但是会有如下情况发生: Integer.toBinaryString... 十六进制很长的时候就会出错,因为通过这样的转换,在把字符串转成整形的时候,长度太长了,超过的整形的最大值,。 于是便有了...

    使用Java自带的转换方法也可以但是会有如下情况发生:

    Integer.toBinaryString(Integer.valueOf("0020",16))。---java自封装的方法

    1. 如果十六进制为“0020”类似这种的情况就会转换为100000,有0的则不会转换。
    2. 十六进制很长的时候就会出错,因为通过这样的转换,在把字符串转成整形的时候,长度太长了,超过的整形的最大值,。

    于是便有了如下代码

    public class BinaryConversion {
        private static String hexStr =  "0123456789ABCDEF";
        private static String[] binaryArray =
                {"0000","0001","0010","0011",
                        "0100","0101","0110","0111",
                        "1000","1001","1010","1011",
                        "1100","1101","1110","1111"};
    
        /**
         *
         * @param str
         * @return 二进制数组转换为二进制字符串   2-2
         */
        public static String bytes2BinStr(byte[] bArray){
    
            String outStr = "";
            int pos = 0;
            for(byte b:bArray){
                //高四位
                pos = (b&0xF0)>>4;
                outStr+=binaryArray[pos];
                //低四位
                pos=b&0x0F;
                outStr+=binaryArray[pos];
            }
            return outStr;
        }
    
        /**
         *
         * @param bytes
         * @return 将二进制数组转换为十六进制字符串  2-16
         */
        public static String bin2HexStr(byte[] bytes){
    
            String result = "";
            String hex = "";
            for(int i=0;i<bytes.length;i++){
                //字节高4位
                hex = String.valueOf(hexStr.charAt((bytes[i]&0xF0)>>4));
                //字节低4位
                hex += String.valueOf(hexStr.charAt(bytes[i]&0x0F));
                result +=hex;  //+" "
            }
            return result;
        }
    
        /**
         *
         * @param hexString
         * @return 将十六进制转换为二进制字节数组   16-2
         */
        public static byte[] hexStr2BinArr(String hexString){
            //hexString的长度对2取整,作为bytes的长度
            int len = hexString.length()/2;
            byte[] bytes = new byte[len];
            byte high = 0;//字节高四位
            byte low = 0;//字节低四位
            for(int i=0;i<len;i++){
                //右移四位得到高位
                high = (byte)((hexStr.indexOf(hexString.charAt(2*i)))<<4);
                low = (byte)hexStr.indexOf(hexString.charAt(2*i+1));
                bytes[i] = (byte) (high|low);//高地位做或运算
            }
            return bytes;
        }
    
        /**
         *
         * @param hexString
         * @return 将十六进制转换为二进制字符串   16-2
         */
        public static String hexStr2BinStr(String hexString){
            return bytes2BinStr(hexStr2BinArr(hexString));
        }
    }
    

    思路:

    1、二进制字节转十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。
    2、十六进制转二进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的十进制数字B与A做"|"运算,即可得到十六进制的二进制字节表示

    参考:

          https://blog.csdn.net/y353027520dx/article/details/51483558

          https://www.cnblogs.com/Free-Thinker/p/6808510.html

    展开全文
  • 我居然发现突然让我写个八进制的数我不知道该如何表示。丢死人了。   public static void main... * 因为二进制太长了,本来系统就是将一些非二进制转成二进制来方便 * 运算的。 */ int i2 = (1) + (1
  • 接收到的为byte数组为十六进制 byte[ ] 打印出的为二进制
  • 十进制: -29 227 十六进制: 0xE3 二进制补码:1110 0011
  • [code="...]/**将16进制转换为二进制 * @param hexStr * @return */ public static byte[] parseHexStr2Byte(String hexStr) { if (hexStr.length() < 1) return null; b...
  • 基础 ...十六进制 0x开头    0xff = 15*(1+16)=255   负数的二进制表示 -42 先看42 = 00101010 取反-》 11010101 加1 -》 11010110       二进制 无符号 有符号 00000001 ...
  • 代码1:十六进制转字符串函数 1 #include<stdio.h> 2 #include<string.h> 3 #include<ctype.h> 4 void Hex2Byte(const char* source, unsigned char* dest, int sourceLen) 5 { ...
  • 什么是二进制? 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的...
  • JAVA byte十六进制存储

    千次阅读 2016-03-18 10:06:41
    JAVA byte十六进制存储 a0如何变为-96 互转机制 byte是一个字节保存的,有8个位,即8个0、1。 8位的第一个位是符号位, 也就是说0000 0001代表的是数字1 1000 0000代表的就是-1 所以正数最大位0111 1111,也...
  • unit uConversion; interface uses SysUtils,Math; type TConversion = class public  //10 进制 to 2,8,16 进制  function inttoBitStr
  • 1Byte = 1B 简写B (不能是小b) 可以写成小写的 byte,但不能简写成b,要用B。一般都用大写 BytebyteByte是一样,习惯上用大写 B 来表示,同理 bit和Bit。 只是在编程语言里不同) 1KB = 1024B 1MB = 1024KB ...
  • 十六进制数0xFF无法赋值给byte类型,强制类型转换(byte value = (byte)0xFF)后,value的值是否等于0xFF,java本身没有检查方法,但python有,就用python写了一个服务器程序,用来检查结果。 import asyncio ...
  • 二进制、十进制、十六进制转换
  • php byte十六进制与float的转换

    千次阅读 2018-08-15 21:16:13
    一个浮点数由2部分组成:底数m 和 指数e。 ±mantissa × 2exponent ...(注意,公式中的mantissa 和 exponent使用二进制表示)浮点数据就是按下表的格式存储在4个字节中: Address+0 Address+1 Address+2...
  • 进制转换,数据在计算机中的表示
  • 1、byte[]数组中存的是十六进制需要转十进制 2、两个十六进制byte需要组合成一个十进制,比如高位:0x01,低位:0x78 组合成0x0178转十进制 解决办法 /** * byte转为十进制int * @param bytes * @...
  • java中byte数组与十六进制字符串相互转换

    千次阅读 多人点赞 2014-05-05 17:21:58
    java中byte数组与十六进制字符串相互转换。Java中byte二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示。所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别...
  • byte转化为十六进制

    2013-06-08 22:48:33
    而4个二进制位就可以表示一个十六进制位,所以一个byte可以转化为2个十六进制位。 方式一: // 把byte 转化为两位十六进制数 public static String toHex(byte b) { String result = Integer.t...
  • 怎么说,最近使用ssm框架的时候,需要将文件转成十六进制的字符串传入数据库,...首先我们了解一下byte[]和十六进制字符串。   众所周知,byte就是我们所说的字节,一个字节有8位的长度,而一个中文字占两个字节,
  • 文章目录CPU二进制十六进制内存寄存器 CPU 二进制十六进制 内存 寄存器
  • java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下:首先关于最简单的二进制转换的方法有:十进制转成...
  • 二进制、八进制、十进制、十六进制关系及转换

    万次阅读 多人点赞 2019-02-21 21:20:22
    二进制,八进制,十进制,十六进制之间的关系是什么?浮点数是什么回事? 本文内容参考自王达老师的《深入理解计算机网络》一书&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;中国水利水电出版社&amp;amp;amp;amp...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,424
精华内容 24,969
关键字:

byte二进制十六进制