`
jiuyuehe
  • 浏览: 184494 次
  • 性别: 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  
这个转变与大端小端没啥关系

相关推荐

    十进制转十六进制包含大小端设置_大小端_matlab_十进制_十六进制_

    在计算机科学中,数据在内存中的存储方式有两种主要格式,即大端模式(Big-Endian)和小端模式(Little-Endian)。这两种模式涉及到多字节数据如何在字节序列中排列,对于理解和处理二进制数据至关重要。本文将详细...

    《Java设计模式》课程设计报告.docx

    系统编码实现阶段,开发者会将设计转化为实际的Java代码,实现各个模式的功能。测试与运行结果部分会展示系统是否按照预期工作,包括单元测试、集成测试等,确保软件质量。最后,总结部分会回顾设计过程,总结经验...

    JAVA核心知识点总结.pdf

    此外,深入学习Java集合框架、异常处理、IO流、网络编程、设计模式等也是Java核心知识的重要组成部分。在面试中,这些知识点通常会被反复考察,因此掌握并能灵活运用这些知识是成为合格Java开发者的前提。

    中国象棋java编写版

    【描述】"asdfagwgreqgafsd.rar文件类型"表明该项目的源代码是存储在一个RAR压缩文件中,RAR是一种常见的文件压缩格式,用于减少文件大小以便于存储和传输。要查看或使用这些源代码,你需要先使用解压工具(如WinRAR...

    图片管理java软件

    对于学习Java编程的用户,这是一个很好的案例,可以深入研究其源代码,了解如何将理论知识转化为实际应用。同时,对于需要管理大量图片的用户,这个软件也是实用的工具,帮助他们节省时间,提高工作效率。

    Java游戏沙丘城堡源代码

    9. **输入处理**:针对移动设备,游戏需要处理触摸屏事件,如滑动、点击等,Java可以捕捉这些事件并转化为游戏内动作。 10. **数据存储与读取**:游戏可能会有保存进度、设置等功能,这需要用到Java的I/O流来读写...

    4747Java语言程序设计(一)

    每种数据类型都有固定的大小和范围,如int类型占用32位存储空间,可以表示-2^31到2^31-1之间的整数。 4. **Java语言的演变与应用**:从Oak到Java,语言经历了从嵌入式系统到Web应用的转变,如今广泛应用于企业级...

    java内存动态编译执行

    Java源代码经过编译器转化为字节码,这是一种中间语言,独立于特定平台。JVM通过类加载器加载这些字节码,并由解释器将其转换为机器码执行。然而,这种解释执行模式在性能上不如直接执行机器码。 2. **即时编译...

    吃豆子游戏(java代码)

    3. **事件处理**:玩家的输入(如键盘按键)需要被捕获并转化为游戏动作。Java提供了事件监听机制来处理这些交互。 4. **线程**:为了实现游戏的实时性,吃豆子的移动和鬼魂的行为通常会在单独的线程中执行,确保...

    IOS JAVA AES128加密解密

    在IT行业中,加密技术是确保数据安全的关键环节。AES(Advanced Encryption Standard)128位加密是一种广泛应用的...开发者需要理解加密过程,选择合适的工作模式,并确保跨平台一致性,以保证数据的安全传输和存储。

    JAVA SM2 SM3 SM4 算法实现,提供例子

    在Java中实现SM4,可以利用`javax.crypto.Cipher`类,设置算法为"SM4/ECB/PKCS5Padding"或"SM4/CBC/PKCS5Padding",根据需要选择电子密码本模式(ECB)或链式模式(CBC)。创建SecretKeySpec对象来存储密钥,然后...

    用java做骑士飞行棋

    Java中的ArrayList或HashSet可以用来存储棋子,方便进行位置查询和操作。 3. 循环和条件语句:在游戏循环中,我们使用while或for循环来执行每一轮的游戏过程。通过if或switch语句判断棋子的移动规则,例如,骑士的...

    基于Java开发的大乱斗闯关游戏源码

    【大乱斗闯关游戏】是一款使用Java编程语言开发的娱乐软件,主要针对喜欢编程、游戏设计以及Java技术的学习者。这款开源项目提供了一个实践Java技术的平台,同时也为玩家带来了一种新颖的游戏体验。通过分析这个项目...

    apriori算法的java代码

    在Java代码中,我们可能会使用集合类(如ArrayList和HashSet)来表示项目和交易,以及Map来存储频繁项集和支持度信息。遍历数据集和进行集合操作是Java实现的关键部分,这需要对Java的并发处理和内存管理有良好的...

    LZW-JAVA源代码

    在这个Java实现中,我们可以看到如何将LZW的概念转化为可执行的代码,以实现数据的高效压缩和解压缩。 LZW算法的基本原理是建立一个动态的编码表,该表在压缩过程中不断更新。它首先将输入数据分解成最短的不重复的...

    java程序员面试宝典,各种基础题面试大全,希望适合你.zip

    Java代码需要通过编译器转化为字节码,然后由Java虚拟机(JVM)执行。 2. **数据类型**:Java有两大类数据类型,基本类型(如int、char、boolean)和引用类型(如类、接口和数组)。基本类型占据固定大小的内存,而...

    Java面试测试题目2018张大成总结

    Java单例模式 - 保证一个类只有一个实例,并提供一个全局访问点。 #### 36. XML文档定义有几种形式 - **DTD**(Document Type Definition)和**Schema**(XSD)。 #### 37. Collection和Collections的区别 - **...

    jvm详解,深入了解java

    源代码首先被Java编译器转换为字节码,字节码随后在JVM上通过Just-In-Time (JIT)编译器进一步转化为机器码,实现高效运行。 1.4 半编译半解释 这种模式兼顾了编译语言的性能和解释语言的灵活性。编译使得程序运行...

    java虚拟机论文

    例如,堆是对象实例存储的区域,堆的大小和垃圾收集策略会直接影响到内存使用和程序性能。栈则负责存储局部变量和方法调用信息,而方法区用于存储类信息、常量和静态变量等。论文对这些区域的深入分析有助于开发者...

    apriori算法java实现

    为了确保算法效率,Java实现可能会采用优化策略,如使用位向量来存储交易信息,或者利用多线程并行计算候选集的支持度。 总之,Apriori算法在数据挖掘中的应用广泛,其Java实现涉及到了数据结构、算法设计以及可能...

Global site tag (gtag.js) - Google Analytics