Java基础Demo -- 基本类型转换字节流

基本类型转换为字节流

字节流转换回基本类型

 注意理解:

0xff &0xff java移位仅支持int或long

>>带符号右移(负数高位补1,正数高位补0),相当于除以2的n次方

>>>无符号右移(高位补0)

<<左移(低位补0),相当于乘以2的次方

/**
* ASCII码 0x00~0x7F
* ISO8859-1/Latin-1西欧标码
* gb2312中文简体 16进制范围0xB0A1~0xF7FE unicode表示范围\u4E00~\u9FA5 \uF900~\uFA2D
* GBK扩充的gb2312 16进制范围0x8140~0xFEFE
* 表示汉字的首1位bit都为1,而ASCII首1位bit为0,所以GBK编码时,判断是否汉字if(bytex<0)
* UTF-16LE小头(低位为0) 中文/英文字符都是占据两个字节 也叫Unicode编码 (JVM就是处理Unicode值的) 举例:'a' 0x6100
* UTF-16BE大头(高位为0) 中文/英文字符都是占据两个字节 也叫Unicode编码 (JVM就是处理Unicode值的) 举例:'a' 0x0061
* UTF-8编码  高8位是111打头的表示随后的三个字节凑在一起才是一个字符 例如中文
*                    高8位是110打头的表示随后的两个字节凑在一起才是一个字符 例如脱离ISO8859-1范围的字符
*                    高8位的首位是0的表示单字节的字符 例如ASCII范围内的字符
* UTF-32编码 每个字符都是硬性规定占4个字节
*/

 

/**
* ASCII码 0x00~0x7F
* ISO8859-1/Latin-1西欧标码
* gb2312中文简体 16进制范围0xB0A1~0xF7FE(其中有5个空位是D7FA-D7FE) unicode表示范围\u4E00~\u9FA5 \uF900~\uFA2D
* GBK扩充的gb2312 16进制范围0x8140~0xFEFE
* 由于表示汉字或图形符号的“高位字节”的首个bit都为1,而ASCII首个bit为0,而实现了这两种字符集对ASCII的兼容
* UTF-16LE小头(低位为0) 中文/英文字符都是占据两个字节 也叫Unicode编码 (Java内部机制就是处理Unicode值的) 举例:'a' 0x6100
* UTF-16BE大头(高位为0) 中文/英文字符都是占据两个字节 也叫Unicode编码 (Java内部机制就是处理Unicode值的) 举例:'a' 0x0061
* UTF-8编码 高8位是111打头的表示随后的三个字节凑在一起才是一个字符 例如中文
*           高8位是110打头的表示随后的两个字节凑在一起才是一个字符 例如脱离ISO8859-1范围的字符
*           高8位的首位是0的表示单字节的字符 例如ASCII范围内的字符
* UTF-32编码 每个字符都是硬性规定占4个字节
*/

/**
 * Java基本数据类型和byte数组相互转化的工具类
 *
 * 0xff 16进制表示法(每一个数字代表4bit) 32位在计算机内表示为 00000000 00000000 00000000 11111111 等于十进制的255
 *
 *  << 左移运算符:操作数向左移动N位(低位补0), 相当于操作数乘以2的几次方
 *  >> "有符号"右移运算符:操作数右移N位, 操作数为正时,高位补0 ; 操作数为正时,高位补1, 相当于操作数除以2的几次方
 * >>> "无符号"右移运算符:操作数右移N位(高位补0)
 *
 * 对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int(因为java的移位操作仅支持int位移 或者 long位移)
 *
 * 所以由此延申出的 byte的字节移位时,为什么要&0xff呢?其作用就是仅关心当前8bit这一字节,其它bit位都置为零,保持二进制补码的一致性;
 *
 * 举例:*				最高	 高	  稍高     最低
	255         0xff                00000000 00000000 00000000 11111111
        -1          (byte)0xff          11111111 11111111 111
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值