`
name327
  • 浏览: 165123 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java int byte互转详解

阅读更多

直接上代码了, 说明在注释中

 

package com.hs;

public class C {
	public static void main(String[] args) {
		int a=129;
		//              第一组         第二组        第三组         第四组
		//2的二进制表示完整为 "[00000000][00000000][00000000][00000010]"[]括号实际没有,为了看起来清楚加的
		byte[] b=new byte[4];
		//向右移位是   低位舍弃,高位补符号位
		//向右移位运算,移动24位后,高8位,被移动到低8位上,二、三、四组都会被丢弃  
		b[0]=(byte) (a>>24);
		//向右移动16位,高16位到低16位地方,第三、四组会被舍弃,至于&0xff这里不容易看出来,b[3]那一行能看出来
		b[1]=(byte) ((a>>16)&0xff);
		//移动8位第四组会被丢弃,结果还是0
		b[2]=(byte) ((a>>8)&0xff);
		//不移动直接进行与(&)运算,0xff的二进制是第四位为8个1 其他是0的数,作用就是排除不想要的位
		//这里来个例子 [00000000][00000110][00000100][00000010]假如有这么个二进制的数字
		//如果你想取到[00000100]字节的值 , 先对其向右移动8位变为
		//[00000000][00000000][00000110][00000100]
		//然后和0xff与运算,0xff二进制[00000000][00000000][00000000][11111111]
		//与运算后的结果就为[00000000][00000000][00000000][00000100]
		//这样需要的字节就拿到了
		b[3]=(byte) (a&0xff);
		for (byte c : b) {
			System.out.print(Integer.toBinaryString(c&0xff)+" ");
		}
		System.out.println();
		//把字节转回Int和上面颠倒下,就不多说了。
		int i=0;
		i+=((b[0]&0xff)<<24);
		i+=((b[1]&0xff)<<16);
		i+=((b[2]&0xff)<<8);
		i+=((b[3]&0xff));
		System.out.println(i);
	}
}

 如果有问题请指出哈

6
1
分享到:
评论
4 楼 myumen 2015-06-18  
讲得挺好的。
int转byte[]还有个变通的方法,就是使用ByteBuffer,代码如下:
public static byte[] intToByteArray(int i) {
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.putInt(i);
return buffer.array();
}

3 楼 myumen 2015-06-18  
讲得挺好的。
int转byte[]还有个变通的方法,就是使用ByteBuffer,代码如下:
<code>
public static byte[] intToByteArray(int i) {
ByteBuffer buffer = ByteBuffer.allocate(4);
buffer.putInt(i);
return buffer.array();
}
</code>
2 楼 name327 2014-11-02  
呆呆DE萌萌 写道
二进制里还能出现3,5?这么叼

sorry写的太激动了, 我改过来。谢谢你指出来
1 楼 呆呆DE萌萌 2014-03-10  
二进制里还能出现3,5?这么叼

相关推荐

    java byte相互转换详解左右位移

    在Java中,基本数据类型byte与int之间的相互转换涉及到计算机的二进制运算、位移操作以及补码的概念。我们首先了解Java中int和byte的数据结构,然后探讨它们之间的转换方法及其背后的原理。 **基本数据类型结构:**...

    Java中byte、byte数组与int、long的转换详解

    - **byte转int**:转换`byte`到`int`时,Java会默认将其视为有符号整数。为了得到无符号的`byte`值,我们需要进行位操作,如`b & 0xFF`,这会移除`byte`的高32位并保留低8位。 2. **Java中byte数组和int之间的转换...

    java 文件和byte互转的实例

    Java 文件和 Byte 互转实例详解 Java 中文件和 Byte 之间的互转是非常常见的操作,例如从文件中读取字节数据,或者根据字节数据生成文件。在本文中,我们将详细介绍 Java 中文件和 Byte 之间的互转的实例代码,以及...

    Java数据类型及其转换详解

    Java 为每个简单类型都提供了对应的封装类,例如 `int` 有 `Integer`,`float` 有 `Float`,这些封装类在处理对象时特别有用,尤其是在集合框架和泛型中。 1. **简单类型与封装类** - **简单类型**:包括 `boolean...

    Java教程之javaIO详解

    Java IO 详解 Java IO(Input/Output)是 Java 语言中用于处理输入输出操作的类库,提供了大量的类和方法来实现文件、网络、字节流等方面的输入输出操作。下面对 Java IO 中的重要知识点进行详细说明。 一、File ...

    Java 类型相互转换byte[]类型,Blob类型详细介绍

    在Java编程中,数据存储和传输常常涉及到不同类型的数据转换,特别是在数据库操作中,与二进制大数据相关的类型如`byte[]`(字节数组)和`Blob`(Binary Large Object)之间的转换尤为常见。本篇文章将详细讲解如何...

    hex2byte byte2hex

    例如,在网络通信、文件存储等场景中,经常需要将二进制数据(通常表示为`byte`数组)转换为十六进制字符串形式(即`hex`),或者相反地,将十六进制字符串转回二进制数据。这种需求催生了两个重要的函数:`hex2byte...

    Java整型数与网络字节序byte[]数组转换关系详解

    "Java整型数与网络字节序byte[]数组转换关系详解" 本文主要介绍了Java整型数与网络字节序byte[]数组之间的转换关系,包括整型数到byte[]数组的转换和byte[]数组到整型数的转换。这些转换关系在Java和C/C++之间的...

    Java 中 char 与 byte 的区别

    ### Java中的char与byte的区别详解 #### 一、引言 在Java编程语言中,`char` 和 `byte` 是两种基本的数据类型,它们分别用于处理字符和数值数据。尽管这两种类型都用来存储数据,但它们之间存在着显著的差异。本文...

    JAVA数据类型转换.pdf

    ### JAVA数据类型转换详解 #### 一、引言 在Java编程中,数据类型转换是一项基本且重要的技能。本文档将详细介绍Java中的数据类型转换,包括简单数据类型之间的转换、字符串与其他数据类型的转换以及一些实用的...

    JAVA变量类型之间的相互转换

    ### JAVA变量类型之间的相互转换详解 在JAVA编程中,数据类型的转换是常见且重要的操作,尤其是在处理不同数据源或进行复杂运算时。本文将详细解析JAVA中各种基本数据类型(如`byte`、`short`、`int`、`long`、`...

    Java基础入门编程详解

    4. **基本数据类型**:Java有八种基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。理解它们的取值范围和用法是学习Java的基础。 5. **变量与常量...

    java jdk io包类详解

    ### Java JDK IO包类详解 #### 概述 Java平台提供的`io`包为开发者提供了访问文件系统、对象序列化等功能的基本输入输出能力。它主要包括字节流、字符流及对象流(字节流的包装类)。此外,还提供了一些基本的文件...

    javajsp中 中文问题详解

    在Java中,字符(`char`)与字节(`byte`)之间的转换是通过编码器(encoder)和解码器(decoder)完成的。Sun公司的标准库中提供了`sun.io.ByteToCharConverter`类,用于实现不同编码间的转换。例如,从GB2312编码...

    java串口通信详解

    6. 实现读写操作,例如`output.write(data)`,`int inByte = input.read()`。 7. 关闭串口,`serialPort.close()`。 五、实际应用示例 以下是一个简单的使用JSSC库进行串口通信的Java程序示例: ```java import ...

    Java软件开发实战 Java基础与案例开发详解 8-2 对象包装器 共6页.pdf

    ### Java软件开发实战:对象包装器详解 #### 1. 概述 在Java中,基本数据类型(如`int`、`double`等)并不是对象。为了支持面向对象编程的特点,即“一切皆对象”的理念,Java为每种基本数据类型提供了对应的包装类...

    Java栈详解Java栈详解.doc

    不同类型的变量占据不同数量的字节,如short、byte和char会被转换为int存储,long和double占据两个字节位置。 - **操作数栈**:动态存储计算过程中的临时数据,通过压栈和出栈进行操作,类似于一个临时的工作区。 ...

Global site tag (gtag.js) - Google Analytics