java笔记--关于int和byte[]的转换

关于int和byte[]数组的转换

--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3891747.html "谢谢--

众所周知java有8种基本类型,分别是低级变量(byte,char,boolean,shot)和高级变量(int,long,double,float),
低级变量会自动转化成高级变量,而高级变量则要用强制转换才能成为低级变量,
可是在文件传输和网络传输当中,由于计算机都是以二进制来存储数据的,所以很多时候我们需要将要用到的数据转换成字节流来完成传输
那么int和byte[]数组之间又是如何转换的呢?
很多人可能会马上想到String类型中的getBytes()方法来实现byte[]的转换,
但可惜的是在int中java没有并封装有像这样的一个方法。
仔细的查看API文档,我们会发现,其实java还是提供了不错的解决方案的,
在java.io包下有这么四个类,分别是输出流ByteArrayOutputStream,DataOutputStream和输入流ByteArrayInputStream和DataInputStream
通过这四个IO流即可实现int和byte[]数组的转换。

以下是代码实例:
package com.xhj.data;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

/**
* int 和 byte[]的相互转换
*
* @author XIEHEJUN
*
*/
public class IntToButeArray {

/**
* 整数转换成字节数组 关键技术:ByteArrayOutputStream和DataOutputStream
*
* @param n
* 需要转换整数
* @return
*/
public static byte[] intToButeArray(int n) {
byte[] byteArray = null;
try {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream(byteOut);
dataOut.writeInt(n);
byteArray = byteOut.toByteArray();
for (byte b : byteArray) {
System.out.println(" " + b);
}
} catch (IOException e) {
e.printStackTrace();
}
return byteArray;
}

/**
* 字节数组转换成整数 关键技术:ByteArrayInputStream和DataInputStream
*
* @param byteArray
* 需要转换的字节数组
* @return
*/
public static int byteArrayToInt(byte[] byteArray) {
int n = 0;
try {
ByteArrayInputStream byteInput = new ByteArrayInputStream(byteArray);
DataInputStream dataInput = new DataInputStream(byteInput);
n = dataInput.readInt();
System.out.println("整数为: " + n);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return n;
}

public static void main(String[] args) {
byte[] byteArray = intToButeArray(105);
byteArrayToInt(byteArray);
}
}

java笔记--关于int和byte[]的转换

时间: 2024-12-06 17:07:50

java笔记--关于int和byte[]的转换的相关文章

java笔记--String类格式化当天日期转换符文档

String类格式化当天日期 转换符:%tb : 格式化为月份的英文缩写%tB : 格式化为月份的英文全写%ta : 格式化为星期%tA : 格式化为星期%ty : 格式化为两位年份值%tY : 格式化为四位年份值%tm : 格式化为两位月份值%td : 格式化为两位日期值%te : 格式化为星期一位日期值%tH : 格式化为两位24时制小时值(00-23)%tk : 格式化为两位24时制小时值(0-23)%tI : 格式化为两位12时制小时值(01-12)%tl : 格式化为两位12时制小时值

TCP通信实现对接硬件发送与接收十六进制数据 & int与byte的转换原理 & java中正负数的表示

今天收到的一份需求任务是对接硬件,TCP通信,并给出通信端口与数据包格式,如下: 1.首先编写了一个简单的十六进制转byte[]数组与byte[]转换16进制字符串的两个方法,如下: /** * 将十六进制的字符串转换成字节数组 * * @param hexString * @return */ public static byte[] hexStrToByteArrs(String hexString) { if (StringUtils.isEmpty(hexString)) { retur

Java中用反码表示整数,及int到byte的转换

Java中的整数都是通过补码表示的,当整数为正数时,补码和原码相同,当整数为负数时,补码为原码按位取反(符号位除外),然后加1. 通过一些例子可以比较明显的看出: int a = -1; System.out.println(Integer.toBinaryString(a));//output: 11111111111111111111111111111111 int a = -128; System.out.println(Integer.toBinaryString(a));//outpu

JAVA 与 C# 通讯中的int 之byte[]

在JAVA与C#通讯时由于两种不通的语言INT类型不样,比如在做Soket时做数据包头确认数据长度需要一个固定的字节数中存放一个INT类型的数据发送时会读不到相同的数据. 在JAVA中 把 INT转为 byte[] 1 /** 2 * 把int32类型的数据转存到4个字节的byte数组中 3 * @param i : int32类型的数据 4 * @return 返回 4个字节大小的byte数组 5 */ 6 public static byte[] ConvertIntToByteArray(

java整型数与网络字节序的 byte[] 数组转换关系

java整型数与网络字节序的 byte[] 数组转换关系 工作项目需要在java和c/c++之间进行socket通信,socket通信是以字节流或者字节包进行的,socket发送方须将数据转换为字节流或者字节包,而接收方则将字节流和字节包再转换回相应的数据类型.如果发送方和接收方都是同种语言,则一般只涉及到字节序的调整.而对于java和c/c++的通信,则情况就要复杂一些,主要是因为java中没有unsigned类型,并且java和c在某些数据类型上的长度不一致. 本文就是针对这种情况,整理了j

java的byte数组转换成在[0,255]范围内

C#的byte    是 0-255java的byte  是 -128-127  java的byte数组转换成在[0,255]范围内int data[]= new int[bytes.length];for(int i=0;i<bytes.length;i++) { data[i] = bytes[i] & 0xff;}

转:Java中String与byte[]的转换

fuzhaoyang 转:Java中String与byte[]的转换 原文地址:http://blog.csdn.net/llwan/article/details/7567906 String s = "fs123fdsa";//String变量 byte b[] = s.getBytes();//String转换为byte[] String t = new String(b);//bytep[]转换为String 做JAVA经常会碰到中文乱码问题,还有各种编码的问题,特别是Stri

java中int与byte数组互转代码详细分析

转载请注明出处:http://blog.csdn.net/tang9140/article/details/43404385 在java中,可能会遇到将int转成byte[]数组,或者将byte[]数组转成int的情况.下面我们来思考下怎么实现? 首先,分析int在java内存中的存储格式. 众所周知,int类型在内存中占4个字节,采用补码方式存储(假如对原码.反码.补码不熟悉,请查阅相关资料).举例: 整型-128对应内存中的二进制值为 整型128对应内存中的二进制值为 然后,考虑如何把int

java笔记--ASCII编码认知和转换

ASCII是基于拉丁字母的一套电脑编码系统,主要用于显示英语字符是当今最通用的单字节编码.包括128个字符. ASCII编码和字符的转换 代码: package com.xhj.data; import java.util.Scanner; /** * ASCII编码转换 * * @author XIEHEJUN * */public class ASCIIExchange { /** * ASCII编码转换成字符 * * @param number * @return */ public st