所谓的大端模式:是指数据的高位,保存在内存的低地址中,而数据的低位,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;
小端模式
所谓的小端模式,是指数据的高位保存在内存的高地址中,而数 据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致
例如: 下面是小端。将低位存储在低位。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: 本人比较菜,具体那些东西是大端干的,那些是小端干的,不太清楚,谢谢!!
分享到:
相关推荐
在计算机科学中,数据在内存中的存储方式有两种主要格式,即大端模式(Big-Endian)和小端模式(Little-Endian)。这两种模式涉及到多字节数据如何在字节序列中排列,对于理解和处理二进制数据至关重要。本文将详细...
系统编码实现阶段,开发者会将设计转化为实际的Java代码,实现各个模式的功能。测试与运行结果部分会展示系统是否按照预期工作,包括单元测试、集成测试等,确保软件质量。最后,总结部分会回顾设计过程,总结经验...
此外,深入学习Java集合框架、异常处理、IO流、网络编程、设计模式等也是Java核心知识的重要组成部分。在面试中,这些知识点通常会被反复考察,因此掌握并能灵活运用这些知识是成为合格Java开发者的前提。
【描述】"asdfagwgreqgafsd.rar文件类型"表明该项目的源代码是存储在一个RAR压缩文件中,RAR是一种常见的文件压缩格式,用于减少文件大小以便于存储和传输。要查看或使用这些源代码,你需要先使用解压工具(如WinRAR...
对于学习Java编程的用户,这是一个很好的案例,可以深入研究其源代码,了解如何将理论知识转化为实际应用。同时,对于需要管理大量图片的用户,这个软件也是实用的工具,帮助他们节省时间,提高工作效率。
9. **输入处理**:针对移动设备,游戏需要处理触摸屏事件,如滑动、点击等,Java可以捕捉这些事件并转化为游戏内动作。 10. **数据存储与读取**:游戏可能会有保存进度、设置等功能,这需要用到Java的I/O流来读写...
每种数据类型都有固定的大小和范围,如int类型占用32位存储空间,可以表示-2^31到2^31-1之间的整数。 4. **Java语言的演变与应用**:从Oak到Java,语言经历了从嵌入式系统到Web应用的转变,如今广泛应用于企业级...
Java源代码经过编译器转化为字节码,这是一种中间语言,独立于特定平台。JVM通过类加载器加载这些字节码,并由解释器将其转换为机器码执行。然而,这种解释执行模式在性能上不如直接执行机器码。 2. **即时编译...
3. **事件处理**:玩家的输入(如键盘按键)需要被捕获并转化为游戏动作。Java提供了事件监听机制来处理这些交互。 4. **线程**:为了实现游戏的实时性,吃豆子的移动和鬼魂的行为通常会在单独的线程中执行,确保...
在IT行业中,加密技术是确保数据安全的关键环节。AES(Advanced Encryption Standard)128位加密是一种广泛应用的...开发者需要理解加密过程,选择合适的工作模式,并确保跨平台一致性,以保证数据的安全传输和存储。
在Java中实现SM4,可以利用`javax.crypto.Cipher`类,设置算法为"SM4/ECB/PKCS5Padding"或"SM4/CBC/PKCS5Padding",根据需要选择电子密码本模式(ECB)或链式模式(CBC)。创建SecretKeySpec对象来存储密钥,然后...
Java中的ArrayList或HashSet可以用来存储棋子,方便进行位置查询和操作。 3. 循环和条件语句:在游戏循环中,我们使用while或for循环来执行每一轮的游戏过程。通过if或switch语句判断棋子的移动规则,例如,骑士的...
【大乱斗闯关游戏】是一款使用Java编程语言开发的娱乐软件,主要针对喜欢编程、游戏设计以及Java技术的学习者。这款开源项目提供了一个实践Java技术的平台,同时也为玩家带来了一种新颖的游戏体验。通过分析这个项目...
在Java代码中,我们可能会使用集合类(如ArrayList和HashSet)来表示项目和交易,以及Map来存储频繁项集和支持度信息。遍历数据集和进行集合操作是Java实现的关键部分,这需要对Java的并发处理和内存管理有良好的...
在这个Java实现中,我们可以看到如何将LZW的概念转化为可执行的代码,以实现数据的高效压缩和解压缩。 LZW算法的基本原理是建立一个动态的编码表,该表在压缩过程中不断更新。它首先将输入数据分解成最短的不重复的...
Java代码需要通过编译器转化为字节码,然后由Java虚拟机(JVM)执行。 2. **数据类型**:Java有两大类数据类型,基本类型(如int、char、boolean)和引用类型(如类、接口和数组)。基本类型占据固定大小的内存,而...
Java单例模式 - 保证一个类只有一个实例,并提供一个全局访问点。 #### 36. XML文档定义有几种形式 - **DTD**(Document Type Definition)和**Schema**(XSD)。 #### 37. Collection和Collections的区别 - **...
为了确保算法效率,Java实现可能会采用优化策略,如使用位向量来存储交易信息,或者利用多线程并行计算候选集的支持度。 总之,Apriori算法在数据挖掘中的应用广泛,其Java实现涉及到了数据结构、算法设计以及可能...
7. **安全性考虑**:为了保证安全,密钥和IV通常不会直接存储,而是通过密码派生函数(如PBKDF2)将用户输入的密码转化为密钥,同时IV可以在加密后的数据中前缀保存,但不与密钥混淆。 8. **错误处理**:在设计过程...