zoukankan      html  css  js  c++  java
  • java的编码

    在java中,

    char中永远存放的unicode编码的数值,范围是0到65535

    1.你可以直接赋数值

    2赋字符,存放的仍然是字符对应的unicode数值。
    有两种形式:1.'李';2.'\u5e4e'

    byte中存放的是整数值,范围是-128到127
    1.直接将整数赋值给它.
    2.赋字符给它.

    byte赋值给char,实际上就是将byte中存放的整形值赋值给char。

    当赋值给byte或者是char的值超过他们的范围时,会发生截断。

    byte赋值给string的时候要考虑到编码问题。

    system.out.println(byte[])打印的是byte[]对象的地址加上hashcode。

    当存储在文件中时,一般是将byte和char转化为16进制字符串来存储。

    1. public static String bytes2HexString(byte[] b) {  
    2.     String ret = "";  
    3.     for (int i = 0; i < b.length; i++) {  
    4.         String hex = Integer.toHexString(b[ i ] & 0xFF);  
    5.     if (hex.length() == 1) {  
    6.         hex = '0' + hex;  
    7.     }  
    8.      ret += hex.toUpperCase();  
    9.   }  
    10.   return ret;  
    11. }  

    byte[]转化十六进制的字符串,注意这里b[ i ] & 0xFF将一个byte和 0xFF进行了与运算,然后使用Integer.toHexString取得了十六进制字符串,可以看出
    b[ i ] & 0xFF运算后得出的仍然是个int,那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i ]);,将byte强转为int不行吗?答案是不行的.

    其原因在于:
    1.byte的大小为8bits而int的大小为32bits 
    2.java的二进制采用的是补码形式 

  • 相关阅读:
    快速排序
    开博寄语
    002易语言编写获取人物坐标
    001寻找人物的坐标
    借条范例:
    python3练习-装饰器
    python3练习-杨辉三角/帕斯卡三角形
    python3内置函数
    Tableau修改参考线上显示的标签
    Tableau10.0学习随记-分组问题
  • 原文地址:https://www.cnblogs.com/lxzh/p/2537933.html
Copyright © 2011-2022 走看看