最近写编解码的代码比较多,抽一点时间梳理下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 梳理的更多相关文章

  1. java基础梳理--朝花夕拾(二)

    1.Java语言语法规则和文件格式: 第一个Java程序:/** 第一个Java程序:控制台输出Hello world!*/public class Test{    //访问修饰符 class关键词 ...

  2. 【转】java byte转long、double、float、int、short,或者long、double、float、int、short转byte

    原文网址:http://www.xuebuyuan.com/988752.html java byte与其他数据类型的转换主要用于二进制数据的编码和解码,主要用于网络传输,读写二进制文件,java和c ...

  3. java byte【】数组与文件读写(增加新功能)

    今天在测试直接写的文章: java byte[]数组与文件读写 时,想调用FileHelper类对字节数组以追加的方式写文件,结果无论怎样竟然数据录入不全,重新看了下文件的追加模式,提供了两种方式: ...

  4. Java Byte取值范围

    Java Byte 的取值范围大家都知道(-128 ~ 127),那么-128 和 127 这两个数是怎么计算的呢? #大学知识回顾: 概念:负数的补码是该 数 绝 对 值 的 原 码 按 位 取 反 ...

  5. java基础梳理--朝花夕拾(三)

    1.了解面向对象的编程思想以及面向对象的特性: 对象: EveryThing is Object: 万物皆是对象,在程序中,我们可以将类.接口.方法.属性等都认为是对象: 面向对象: 是一种程序设计方 ...

  6. java基础梳理--朝花夕拾(一)

    简介: Java是一种撰写跨平台应用软件的面向对象语言,1995年由Sun Microsystems公司推出. 2009年04月20日,甲骨文74亿美元收购Sun,取得java的版权. 2011年7月 ...

  7. java byte数组与String互转

      java byte数组与String互转 CreationTime--2018年7月6日14点53分 Author:Marydon 1.String-->byte[] 方法:使用String ...

  8. java byte数组与16进制间的相互转换

      java byte数组与16进制间的相互转换 CreationTime--2018年6月11日15点34分 Author:Marydon 1.准备工作 import java.util.Array ...

  9. Java byte类型转换成int类型时需要 & 0XFF的原因

    Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b  = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...

随机推荐

  1. uni-app版本在线更新问题(下载完成安装时一闪而过,安卓8以上版本)

    我使用的是uni-app插件市场https://ext.dcloud.net.cn/plugin?id=142 出现一闪而过时加入权限 <uses-permission android:name ...

  2. git 服务器 LINUX端的使用

    首先,需要建立一个git服务器----- 这里介绍如何使用git这个服务器 我们在github上下载一份代码,里面有如下内容 我们使用git服务器的时候不能有.git 文件,所以在此将其删除 ys-l ...

  3. TypeError: can only concatenate str (not "int") to str解决方式

    使用format函数解决问题 for page in range(1,pagebox+1): url = "https://www.dd373.com/s/rbg22w-x9kjbs-wwf ...

  4. 使用Django的时候,页面请求正常,也没有报任何错误,甚至连警告都没有的情况下,页面却还是原地不动或者闪一下或者无限显示加载动画的情况下的解决办法

    这个问题描述比较笼统,但根据我目前遇到过两种情况来看,似乎都比较重要而且实用,所以打算分别讲述一下. 说明:Django的版本是Django2.0 第一种:URL配置错误 页面闪一下,却原地不动,可能 ...

  5. QT安装后再添加或删除组件

    QT安装目录下打开MaintenanerceTool.exe 手动添加​储存库,要定位一个储存有QT在线安装镜像的网址: https://download.qt.io/online/qtsdkrepo ...

  6. org.json.JSONObject的getString和optString使用注意事项

    结论:org.json.JSONObject的getString如果取不到对应的key会抛出异常,optString则不会 /** * Returns the value mapped by {@co ...

  7. [转]CDH QuickStart VM基本使用

    https://blog.csdn.net/wiborgite/article/details/78731944 https://www.cnblogs.com/harrychinese/p/big_ ...

  8. 数据分析入门——numpy类库基础知识

    numpy类库是数据分析的利器,用于高性能的科学计算和数据分析.使用python进行数据分析,numpy这个类库是必须掌握的.numpy并没有提供强大的数据分析功能,而是它提供的ndarray数据结构 ...

  9. Gradle 下载的依赖包在什么位置?

    Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1Windows系统默认下载到:C:\Users\(用户名)\.gradle\cach ...

  10. 杂记:Python 两坑

    近日写代码又遇到两个 Python 的坑,觉得值得记录. 递归传参问题 Python 里传参的实现是 assignment,但由于 Python 里都是对象,除了几个基本类型,assignment 基 ...