`
jiuyuehe
  • 浏览: 181125 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 大小端存储模式 转化

阅读更多
 所谓的大端模式:是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;

小端模式
  所谓的小端模式,是指数据的高位保存在内存的高地址中,而数 据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致

例如: 下面是小端。将低位存储在低位。intel就是这么干的

/** 
     * int to byte[] 支持 1或者 4 个字节 
     * @param i 
     * @param len 
     * @return 
     */  
     public static byte[] intToByte(int i,int len) {  
            byte[] abyte=null;  
            if(len==1){  
                abyte = new byte[len];  
                abyte[0] = (byte) (0xff & i);  
            }else{  
                abyte = new byte[len];  
                abyte[0] = (byte) (0xff & i);  
                abyte[1] = (byte) ((0xff00 & i) >> 8);  
                abyte[2] = (byte) ((0xff0000 & i) >> 16);  
                abyte[3] = (byte) ((0xff000000 & i) >> 24);  
            }  
            return abyte;  
        }  
       public  static int bytesToInt(byte[] bytes) {  
           int addr=0;  
           if(bytes.length==1){  
            addr = bytes[0] & 0xFF;  
           }else{  
               addr = bytes[0] & 0xFF;  
               addr |= ((bytes[1] << 8) & 0xFF00);  
               addr |= ((bytes[2] << 16) & 0xFF0000);  
               addr |= ((bytes[3] << 24) & 0xFF000000);  
           }  
           return addr;  
        }  



下面是大端: 一般网络传输都是这么干的!
/**
	 * int to byte[] 支持 1或者 4 个字节
	 * @param i
	 * @param len
	 * @return
	 */
	 public static byte[] intToByte(int i,int len) {
	        byte[] abyte=null;
	        if(len==1){
	        	abyte = new byte[len];
	        	abyte[0] = (byte) (0xff & i);
	        }else{
	        	abyte = new byte[len];
	        	abyte[0] = (byte) ((i >>> 24) & 0xff);
	        	abyte[1] = (byte) ((i >>> 16) & 0xff);
		        abyte[2] = (byte) ((i >>> 8) & 0xff);
		        abyte[3] = (byte) (i & 0xff);
	        }
	        return abyte;
	    }
	   public  static int bytesToInt(byte[] bytes) {
		   int addr=0;
		   if(bytes.length==1){
	        addr = bytes[0] & 0xFF;
		   }else{
			   addr = bytes[0] & 0xFF;
			   addr = (addr << 8) | (bytes[1] & 0xff) ;
			   addr = (addr << 8) | (bytes[2] & 0xff) ;
			   addr = (addr << 8) | (bytes[3] & 0xff) ;
		   }
		   return addr;
	    }



ps: 本人比较菜,具体那些东西是大端干的,那些是小端干的,不太清楚,谢谢!!
分享到:
评论
1 楼 永志_爱戴 2015-03-11  
这个转变与大端小端没啥关系

相关推荐

    Java优化编程(第2版)

    Java优化编程(第2版)通过丰富、完整、富有代表性的实例,展示了如何提升Java应用性能,并且给出了优化前与优化后的Java应用程序的性能差别,以实际的实例与数字告诉你,为什么不可以这么做,应该怎么做,深入分析...

    JAVA面试题最全集

    简述java编程中事件处理模式。 30.你编写过applet吗?applet的安全权限如何?试列举java application或者applet中与servlet/jsp通信可以采用的方式。 31.简述逻辑操作(如&,|)与条件操作(如&&,||)的区别。 32....

    java面试题

    84.8. 将一个键盘输入的数字转化成中文输出(例如:输入1234567,输出:一百二拾三万四千五百六拾七),请用java语言编一段程序实现! 114 84.9. 题目1:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有...

    java范例开发大全源代码

     实例81 按字母顺序比较大小 110  实例82 首尾相连 111  实例83 字符串间的比较 112  实例84 字符集的解码方法 113  实例85 寻找指定字符第一次出现的位置 114  实例86 寻找指定字符最后出现的位置 ...

    java范例开发大全

    实例81 按字母顺序比较大小 110 实例82 首尾相连 111 实例83 字符串间的比较 112 实例84 字符集的解码方法 113 实例85 寻找指定字符第一次出现的位置 114 实例86 寻找指定字符最后出现的位置 115 实例87 我究竟有多...

    Java范例开发大全 (源程序)

     实例81 按字母顺序比较大小 110  实例82 首尾相连 111  实例83 字符串间的比较 112  实例84 字符集的解码方法 113  实例85 寻找指定字符第一次出现的位置 114  实例86 寻找指定字符最后出现的位置 115 ...

    java 编写文件上传类简单易用

    用 Java 编写的、协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案。本文将从文件传输的基本原理入手,分析如何用 java进行文件的上传,并提出解决方案。 一、基本...

    Java范例开发大全(全书源程序)

    Java范例开发大全(全书源程序),目录如下: 第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境...

    java范例开发大全(pdf&源码)

    实例81 按字母顺序比较大小 110 实例82 首尾相连 111 实例83 字符串间的比较 112 实例84 字符集的解码方法 113 实例85 寻找指定字符第一次出现的位置 114 实例86 寻找指定字符最后出现的位置 115 实例87 我究竟有多...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    市场上相应的检测平台诸如检测通、凡特网等皆为pc端检测网站,并且操作繁琐不够人性化,用户在实地使用中存在很多问题。昆山工业技术研究院着眼于为委托用户和质检机构搭建良好的沟通桥梁,免去目前市场业务中企业...

    Toad 使用快速入门

    可以进行各种alter操作:online, offline, 增加数据文件,改变数据文件大小,改变物理存储属性等 对其他数据库对象也有完备的操作支持。 2. SQL Editor: a) 激活SQL Editor的三种方式: i. 连接到数据库之后...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...

    BlackBerry开发平台配置及入门介绍(傻瓜教程)

    使用端对端TripleDES加密、可以使数据在BlackBerry无线手持设备和BlackBerryEnterpriseServer之间传输时保持加密。BlackBerryEnterpriseServer还支持AES(AdvancedEncryptionStandard)和S/  MIME...

    2009达内SQL学习笔记

    可转化为日期、字符、数值等三种(注意:转化时,两参数必须要同类型) 如:NVL(date, '01-JAN-95') NVL(title,'NO Title Yet') NVL(salary,0) 错误写法: Select last_name,title,salary*commission_pct/100 COMM ...

    freemarker总结

    JAVA模版引擎Freemarker常用标签(一) 1. if指令 这是一个典型的分支控制指令,该指令的作用完全类似于Java语言中的if,if指令的语法格式如下: &lt;#if condition&gt;... &lt;#elseif condition&gt;... &lt;#elseif condition&gt;......

    C#微软培训资料

    17.2 文件存储管理 .217 17.3 读 写 文 件 .222 17.4 异步文件操作 .227 17.5 小 结 .234 第十八章 高 级 话 题 .235 18.1 注册表编程 .235 18.2 在 C #代码中调用 C++和 VB 编写的组件 .240 18.3 版 ...

Global site tag (gtag.js) - Google Analytics