网络来源: http://cuisuqiang.iteye.com/blog/1695498
获取一个 Byte 的各个 Bit 值
1. bit:位
一个二进制数据0或1,是1bit;
2. byte:字节
存储空间的基本计量单位,如:MySQL中定义 VARCHAR(45) 即是指 45个字节;
1 byte = 8 bit
3. 一个英文字符占一个字节;
1 字母 = 1 byte = 8 bit
4. 一个汉字占2个字节;
1 汉字 = 2 byte = 16 bit
byte:一个字节(8位)(-128~127)(-2的7次方到2的7次方-1)
short:两个字节(16位)(-32768~32767)(-2的15次方到2的15次方-1)
int:四个字节(32位)(一个字长)(-2147483648~2147483647)(-2的31次方到2的31次方-1)
long:八个字节(64位)(-9223372036854774808~9223372036854774807)(-2的63次方到2的63次方-1)
float:四个字节(32位)(3.402823e+38 ~ 1.401298e-45)(e+38是乘以10的38次方,e-45是乘以10的负45次方)
double:八个字节(64位)(1.797693e+308~ 4.9000000e-324
Java中数据流的操作很多都是到byte的,但是在许多底层操作中是需要根据一个byte中的bit来做判断!
Java中要根据byte获得bit就要进行一些位操作,不过为了使用我直接给出解决方案,至于位操作的一些内容,回头再说!
package com.test;
import java.util.Arrays;
public class T {
/**
* 将byte转换为一个长度为8的byte数组,数组每个值代表bit
*/
public static byte[] getBooleanArray(byte b) {
byte[] array = new byte[8];
for (int i = 7; i >= 0; i--) {
array[i] = (byte)(b & 1);
b = (byte) (b >> 1);
}
return array;
}
/**
* 把byte转为字符串的bit
*/
public static String byteToBit(byte b) {
return ""
+ (byte) ((b >> 7) & 0x1) + (byte) ((b >> 6) & 0x1)
+ (byte) ((b >> 5) & 0x1) + (byte) ((b >> 4) & 0x1)
+ (byte) ((b >> 3) & 0x1) + (byte) ((b >> 2) & 0x1)
+ (byte) ((b >> 1) & 0x1) + (byte) ((b >> 0) & 0x1);
}
public static void main(String[] args) {
byte b = 0x35; // 0011 0101
// 输出 [0, 0, 1, 1, 0, 1, 0, 1]
System.out.println(Arrays.toString(getBooleanArray(b)));
// 输出 00110101
System.out.println(byteToBit(b));
// JDK自带的方法,会忽略前面的 0
System.out.println(Integer.toBinaryString(0x35));
}
}
输出内容就是各个 bit 位的 0 和 1 值!
根据各个Bit的值,返回byte的代码:
/**
* 二进制字符串转byte
*/
public static byte decodeBinaryString(String byteStr) {
int re, len;
if (null == byteStr) {
return 0;
}
len = byteStr.length();
if (len != 4 && len !=
{
return 0;
}
if (len ==
{// 8 bit处理
if (byteStr.charAt(0) == '0') {// 正数
re = Integer.parseInt(byteStr, 2);
} else {// 负数
re = Integer.parseInt(byteStr, 2) - 256;
}
} else {// 4 bit处理
re = Integer.parseInt(byteStr, 2);
}
return (byte) re;
}
分享到:
相关推荐
【完整课程列表】 ...Java语言基础 Java网络编程技术 Java程序设计使用教程 第09章 输入输出流和文件操作(共37页).ppt Java语言基础 Java网络编程技术 Java程序设计使用教程 第10章 网络通信(共53页).ppt
Java网络编程技术 Java程序设计使用教程 第08章 Applet应用程序(共34页).pptJava语言基础 Java网络编程技术 Java程序设计使用教程 第09章 输入输出流和文件操作(共37页).pptJava语言基础 Java网络编程技术 Java...
操作系统,网络协议,Java基础,Java线程,java并发,mysql,redis,分布式讲解,基础算法
大数据技术基础实验报告-调用Java API实现HDFS操作
socket的TCP与UDP编程示例
二、 Java语法基础 5 数据类型 5 运算符号 14 语句 15 函数 15 方法重载(Overloadjing)与重写(Overriding) 16 数组 17 总结 18 三、 常见关键字 20 四、 面向对象★★★★★ 21 五、 封装(面向对象特征之一)★...
本课题是应用了计算机网络通信技术和JAVA网络编程的基础知识,以JAVA为平台,利用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发出的基于Socket的网络即时通信系统。系统采用客户机/服务器(C/S)的模式...
行时所需要的基本条件和许多 Java 基础类,例如,IO 类、GUI 控件类、网络类等。JRE 是提供给 普通用户使用的,如果你只想运行别人开发好的 Java 程序,那么,你的计算机上必须且只需安装 JRE。 JDK(Java ...
在因特网日益发展壮大的今天,万维网在其上的通信量已经超过90%,万维网信息的安全问题已经越来越被人们所重视,而作为万维网应用层核心协议的http协议是基础。当网络发生异常时,对网络上传输的数据进行监视和分析...
基于Socket的java网络编程, Socket通讯的过程 Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server...
Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...
全书共分14章,分别讲解了基本数据类型、运算符、表达式和语句、类、对象和接口、常用实用类、输入/输出流、JDBC数据库操作、组件及事件处理、图形与图像、Java多线程机制、Java网络编程等内容。《Java基础教程(第3...
移动操作系统原理与实践——基于Java语言的Android应用开发 目录 基础篇 第1章移动操作系统概论 1.1操作系统的原理与概念 1.1.1隐藏硬件细节 1.1.2资源管理 1.1.3操作系统的历史 1.2操作系统的分类 1.2.1...
第03章 Java基本语法 第04章 Java与面向对象编程 第05章 Java的数据结构 第06章 字符串操作 第07章 接口和包 第08章 异常处理 第09章 Java的IO系统 第10章 多线程编程 第11章 Java小程序Applet 第12章 操作数据库 第...
Java核心知识点整理(包括Java基础、JVM、数据库、计算机网络、算法、操作系统、设计模式、系统设计、框架原理)。 > # 目录结构 > > | :--: | :----: | :--------: | :--: | :------: | :------: | :------: | :--...
Java 可以玩网络游戏、与世界各地的人们聊天、欣赏三维图片等等。此外,对于作为公司计算基础的企业内部网应用程序和其他电子商务解决方案而言,它也是不可缺少的一部分。
分享 技术面试必备基础知识、Leetcode 题解、Java、C++、Python、后端面试、操作系统、计算机网络、系统设计分享 技术面试必备基础知识、Leetcode 题解、Java、C++、Python、后端面试、操作系统、计算机网络、系统...
本课题是应用了计算机网络通信技术和JAVA网络编程的基础知识,以JAVA为平台,利用Eclipse开发工具,并使用SQL Server 2000管理数据库数据开发出的基于Socket的网络即时通信系统。系统采用客户机/服务器(C/S)的模式...
数组和字符串的声明、创建和用法,异常的概念及其用法,数据输入/输出方法,Java的多线程机制及其用法,图形用户界面开发,以及Java网络和数据库编程基础知识等。 本书具有如下特点:(1)全书内容依据Java的功能和...