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 ...
随机推荐
- 经验分享:PDF怎么提取页面
PDF文件的页面有很多但有需要的并不是全部,有时候需要其中一页或几页的时候,这个时候我们就需要把单独的页面提取出来,这个时候应该怎么做呢,上次有小伙伴来询问小编,今天小编就为大家分享一下小编自己的编辑 ...
- struts2-第一章-基础用法2
一,回顾 struts2框架搭建步骤 (1)创建maven项目 (2)web.xml配置struts2的核心过滤器(filter) (3)pom.xml配置servlet,struts的依赖 (4)把 ...
- 使用token做认证
对当前用户,使用base64加密token,再解密token,但是不如JWT加密安全 import time import base64 import hmac def generate_token( ...
- 解决 DBMS_AW_EXP: BIN$*****==$0 not AW$
在Oracle 11.2.0.4 版本的数据库中,使用数据泵导出数据时,有可能会遇到这样的提示: 示例1 Connected to: Oracle Database 11g Enterprise Ed ...
- linux常用命令及使用技巧(一)
shell命令格式:command [options][arguments] shell的通配符 *匹配任意一个或多个字符 ?匹配任意单一字符 []匹配任何包含在方括号内的单字符 shell的重定向: ...
- Go之十大经典排序算法
1.冒泡排序 func bubble_sort(li []int) { for i := 0; i < len(li)-1; i++ { exchange := false for j := 0 ...
- Android进阶:五、RxJava2源码解析 2
上一篇文章Android进阶:四.RxJava2 源码解析 1里我们讲到Rxjava2 从创建一个事件到事件被观察的过程原理,这篇文章我们讲Rxjava2中链式调用的原理.本文不讲用法,仍然需要读者熟 ...
- PTA_Have fun with numbers(C++)
#include<iostream> #include<cstring> using namespace std; int main() { ; ]="; ]={}, ...
- LNMP环境并发优化
LNMP环境并发优化 服务器 8核32Gx3 如图是一条http请求的生命周期,共经过nginx,php-fpm,PHP三个模块 所以我们可以从nginx,php-fpm,PHP三个维度去优化 一.p ...
- git 的常用命令(未完待补充)
一.初始化 git git init 这样会默认创建 master 分支 二.查看当前状态 git status 查看 git 的默认状态 三.创建一个文件,并把它添加到 git 仓库,使用 git ...