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 ...
随机推荐
- LeetCode 14.Longest Common Prefix(C++)
最长公共前缀问题,考虑没有或只有一个字符串的情况,然后只需要逐个比对就可以了. class Solution { public: string longestCommonPrefix(vector&l ...
- Linux查看显示编辑文本文件
1:cat -bash-4.1$ cat --help 用法:cat [选项]... [文件]... 将[文件]或标准输入组合输出到标准输出. -A, --show-all 等于- ...
- IntelliJ IDEA配置Maven
- oracle ORA-00119, ORA-00132问题解决
使用PL/SQL登录oracle报ORA-12154: TNS: 无法解析指定的连接标识符sqlplus /nologconnect /as sysdbastartup报如下错误:ORA-00119: ...
- Netty 学习系列
Netty实现httpserver简单示例 3个Java类实现最基本的接收请求,响应一个文本的简单http服务器. https://www.cnblogs.com/demingblog/p/99707 ...
- brew本地安装包
brew --cache # 输出本地缓存 一般位置 ~/Library/Caches/Homebrew # 将下载下来文件mv到缓存路径 download目录 # 重命名成没有下载下来的文件名 xx ...
- Python 实现整数线性规划:分枝定界法(Branch and Bound)
今天做作业,要实现整数线性规划的分枝定界法算法.找了一些网上的博客,发现都很屎,感觉自己写的这个比较清楚.规范,所以在此记录.如有错误,请指正. from scipy.optimize import ...
- Go之十大经典排序算法
1.冒泡排序 func bubble_sort(li []int) { for i := 0; i < len(li)-1; i++ { exchange := false for j := 0 ...
- UOJ#348. 【WC2018】州区划分
原文链接www.cnblogs.com/zhouzhendong/p/UOJ348.html 前言 第一次知道子集卷积可以自己卷自己. 题解 这是一道子集卷积模板题. 设 $sum[S]$ 表示点集 ...
- Idea下的springboot mysql8.0等报错解决随笔
cannot load jdbc class path:mysql8.0装载失败,可能原因,驱动名称错误,连接字符串中需要加入时区UTC,否则8.0一定会报错无法连接,关闭SSL 在applicati ...