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);//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++){ } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)