• Encode编码


    Encode编码:

      Java是双字节编码utf-16be,中文占用2个字符,英文占用2个字符。

      项目默认编码是GBK,中文占用2个字符,英文占用1个字符。

      UTF-8编码:中文占用3个字符,英文占用1个字符。

      文本文件就是字节序列,可以是任意编码的字节序六二,编码只是读取的方式,当字节序列是某种编码时,要把字节序列转换成字符串,也要用这种编码的方式,否则会发生乱码。

    package com.zhao.encode;
    
    import java.io.UnsupportedEncodingException;
    
    public class Encode {
    
    public static void main(String[] args) throws UnsupportedEncodingException {
    String str="慕课ABC";
    //转换成字节序列用的是项目默认的编码GBK    
    byte[] bs=str.getBytes();
    for(byte b:bs){
    //把字节(转换成了int)以16进制的方式显示
    System.out.print(Integer.toHexString(b&0xff)+" ");
    }
    
    System.out.println();
    
    //GBK编码:中文占用2个字节,英文占用1个字节。
    byte[] bs2=str.getBytes("gbk");
    for(byte b:bs2){
    System.out.print(Integer.toHexString(b&0xff)+" ");
    }
    
    System.out.println();
    
    //UTF-8编码:中文占用3个字节,英文占用1个字节
    byte[] bs3=str.getBytes("UTF-8");
    for(byte b:bs3){
    System.out.print(Integer.toHexString(b&0xff)+" ");
    }
    
    System.out.println();
    
    //java是双字节编码 utf-16be
    byte[] bs4=str.getBytes("utf-16be");
    //utf-16be编码:中文占用2个字节,英文占用高2个字节
    for(byte b:bs4){
    System.out.print(Integer.toHexString(b&0xff)+" ");
    }
    
    /*
    * 当你的字节序列是某种编码时,这时候想把字节序列编程字符串,也需要用这种编码方法,否则会出现乱码
    * */
    String s=new String(bs4);
    System.out.println(s);
    
    /*
    *文本文件 就是字节序列
    *可以是任意编码的字节序列
    *如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ANSI编码
    * */
    }
    
    }
    
     

    扩展:

      byte字节:一个字节等于8位二进制位,数据存储是以字节byte为单位,数据传输是以为big为单位。

      一个位(bit)代表一个0或者1的二进制数,每八个bit组成一个byte

      1MB=1024KB   1KB=1024B   1B=8bit

      四个bit可以表示一个十六进制位,而1byte=8bit 所以1byte可以转化为2个十六进制位

      0xFF: 0x表示十六进制,F是15,所以是 1111 1111 ,真用8个bit,是一个字节

      byte转化成int ,无论是十六进制 二进制  都是二进制,都是8bit到32bit的过程

      对于32bit的int来说:0xFF 是 00000000 00000000 00000000 11111111

      &0xFF 把前24位(bit)全部清零,便可以得到有效的数据

      Java的二进制采用的是补码形式,

      正数:原码、反码、补码相同

      负数:符号位不变,反码为原码按位取反,补码为反码加一

      8位-1的补码 11111111      32位-1的补码  11111111 11111111 11111111 11111111

      逻辑与& 二者都成立才成立

      按位与运算规则: 0^0=0   0^1=0   1^0=0   1^1=1

  • 相关阅读:
    DQL2.3.开始使用Dgraph基本类型和操作
    DQL2.7.开始使用Dgraph模糊搜索
    启动时查看配置文件application.yml
    从源码角度,带你研究什么是三级缓存
    Spring Boot 在启动时进行配置文件加解密
    论Redis分布式锁的正确使用姿势
    SpringBoot中整合Redis、Ehcache使用配置切换 并且整合到Shiro中
    在项目中,如何保证幂等性
    给你的SpringBoot做埋点监控JVM应用度量框架Micrometer
    从源码层面带你实现一个自动注入注解
  • 原文地址:https://www.cnblogs.com/zhao307/p/5344751.html
Copyright © 2020-2023  润新知