java byte 梳理
最近写编解码的代码比较多,抽一点时间梳理下java下byte的解析。在例子代码中主要涉及的知识点就两块:
1、byte代表8个bit,其中最高位是符号位;
2、当我们用String类的getBytes时,其实是默认采用某种编解码格式的,因此在例子中数字1被解析成49;
public class App {
public static void main(String[] args) throws UnsupportedEncodingException {
byte a = 11;//总共8位,第一位是符号位
for(int i = 0; i < 8; i++){
System.out.printf("%d ", a >> i & 0x01);
}//1 1 0 1 0 0 0 0
System.out.println(" ");
byte c = 0x11;
for(int i = 0; i < 8; i++){
System.out.printf("%d ", c >> i & 0x01);
}//1 0 0 0 1 0 0 0
System.out.println(" ");
byte b = 1;
b |= 0x01 << 7;
for(int i = 0; i < 8; i++){
System.out.printf("%d ", b >> i & 0x01);
}//1 0 0 0 0 0 0 1
System.out.println(" ");
System.out.println(b);//-127
System.out.println(" ");
byte d = Byte.parseByte("A", 16);
for(int i = 0; i < 8; i++){
System.out.printf("%d ", d >> i & 0x01);
}//0 1 0 1 0 0 0 0
System.out.println(" ");
String i = Integer.toString(3);//
String j = Integer.toHexString(21);//15,采用16进制表示21
System.out.printf("%s %s ", i, j);//3 15
System.out.println(" ");
//getBytes一定采用某种编码格式,若不填写则采用操作系统默认的格式
byte[] data = j.getBytes("UTF-8");
int ii = 0;
int jj = 0;
//在UTF-8编码下1被编码成49,注意不是十进制四十九,而是十进制四和九,同理编码五为五三;
for( ii = 0; ii < data.length; ii++){
System.out.println(data[ii]);//49 53
for( jj = 0; jj < 8; jj++){
System.out.printf("%d ", data[ii] >> jj & 0x01);
if(7 == jj){
System.out.println(" ");
}
}
//1 0 0 0 1 1 0 0 ---> 4 9
//1 0 1 0 1 1 0 0 ---> 5 3
}//for( ii = 0; ii < data.length; ii++){
}
}
java byte 梳理的更多相关文章
- java基础梳理--朝花夕拾(二)
1.Java语言语法规则和文件格式: 第一个Java程序:/** 第一个Java程序:控制台输出Hello world!*/public class Test{ //访问修饰符 class关键词 ...
- 【转】java byte转long、double、float、int、short,或者long、double、float、int、short转byte
原文网址:http://www.xuebuyuan.com/988752.html java byte与其他数据类型的转换主要用于二进制数据的编码和解码,主要用于网络传输,读写二进制文件,java和c ...
- java byte【】数组与文件读写(增加新功能)
今天在测试直接写的文章: java byte[]数组与文件读写 时,想调用FileHelper类对字节数组以追加的方式写文件,结果无论怎样竟然数据录入不全,重新看了下文件的追加模式,提供了两种方式: ...
- Java Byte取值范围
Java Byte 的取值范围大家都知道(-128 ~ 127),那么-128 和 127 这两个数是怎么计算的呢? #大学知识回顾: 概念:负数的补码是该 数 绝 对 值 的 原 码 按 位 取 反 ...
- java基础梳理--朝花夕拾(三)
1.了解面向对象的编程思想以及面向对象的特性: 对象: EveryThing is Object: 万物皆是对象,在程序中,我们可以将类.接口.方法.属性等都认为是对象: 面向对象: 是一种程序设计方 ...
- java基础梳理--朝花夕拾(一)
简介: Java是一种撰写跨平台应用软件的面向对象语言,1995年由Sun Microsystems公司推出. 2009年04月20日,甲骨文74亿美元收购Sun,取得java的版权. 2011年7月 ...
- java byte数组与String互转
java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String ...
- java byte数组与16进制间的相互转换
java byte数组与16进制间的相互转换 CreationTime--2018年6月11日15点34分 Author:Marydon 1.准备工作 import java.util.Array ...
- Java byte类型转换成int类型时需要 & 0XFF的原因
Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...
随机推荐
- vue性能
刚开始接触vue觉得vue真是好,用起来好方便呀,与以往的用jquery类库写逻辑,简直方便的要死.网上也都是对vue的好评,但是呢我现在的感觉就是vue真坑,真垃圾. 先说的我们项目遇到到问 ...
- The walking dead
邪恶令好人团结 Facing evil brings good people together 只是没有人觉得自己是邪恶的一边 No one ever thinks that they’re the ...
- mui slider禁止滑动
网上方法: mui('.mui-slider').slider().setStopped(true); 实际使用 mui('.mui-slider').slider().stopped = true; ...
- open file /var/mobile/Media/DCIM 相册中获取到的视频地址使用 报错 视频文件不存在
从相册中获取到的视频地址 例如 file:///var/mobile/Media/DCIM/100APPLE/IMG_9876.MOV 后面再使用的时候报错 视频文件不存在 那是因为在ios10. ...
- VS 编码规范---- 代码注释设置
一个良好的代码风格在开发过程和后期维护过程中是必不可少的.每次在添加新类的时候都需要添加一些关于类的注释,包括创建时间.创建人.类的功能介绍.修改时间等一系列的信息,以方便以后的查找和快速了解.在Co ...
- SSM框架中写sql在xml文件中
第一种(用Mapper.xml映射文件中定义了操作数据库sql) 注意点: 1.#{}与${} #{}表示一个占位符,使用占位符可以防止sql注入, ${}通过${}可以将parameterType传 ...
- md5两次加密
private static final String salt="hzjfstkfdff"; public static String MD5(String src) { ret ...
- “浅入浅出”函数防抖(debounce)与节流(throttle)
函数防抖与节流是日常开发中经常用到的技巧,也是前端面试中的常客,但是发现自己工作一年多了,要么直接复用已有的代码或工具,要么抄袭<JS高级程序设计>书中所述"函数节流" ...
- javascript中的浅拷贝ShallowCopy与深拷贝DeepCopy
拷贝,在js中,分为浅拷贝和深拷贝.这两者是如何区分的呢?又是如何实现的呢? 深浅拷贝的区分 首先说下,在js中,分为基础数据类型和复杂数据类型, 基础数据类型:Undefined.Null.Bool ...
- 安卓获取签名SHA1
Debug签名:D:\Java\jdk1.8.0_151\bin>keytool -list -v -keystore debug.keystore 无需密码 Relese签名:D:\Java ...