`
yeshaoting
  • 浏览: 684352 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

整数转换成字节型数组

    博客分类:
  • J2SE
 
阅读更多

 

 

整数转换成字节型数组

 

描述:

整数(int,long,大整数)转换成字节型数组(byte[])

 

 

方法一

利用java.math.BigInteger的toByteArray()方法,将数值转换成字节型数组byte[]。

 

 

主要代码:

 

/**
 * Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)
 * All rights reserved.
 * Author: Jarg Yee <yeshaoting@gmail.com>
 * http://jarg.iteye.com/
 */
import java.math.BigInteger;
/*
 * 整数(int,long,大整数)转换成字节型数组(byte[])
 */
public class IntegerToByteArrayUtil
{
	/** for debugging. */
	public static void main(String[] args)
	{
		BigInteger bigInteger = null;

		// bigIntegerToByteArray
		String bigNumber = "" + Long.MAX_VALUE/50 + Long.MAX_VALUE/50;// 一个测试大整型数
		bigInteger = new BigInteger(bigNumber.toString());
		byteArrayToString(bigInteger.toByteArray());	// 转换
		
		// longToByteArray
		Long longNumber = Long.MAX_VALUE/50;			// 一个测试长整型数
		bigInteger = new BigInteger(longNumber.toString());
		byteArrayToString(bigInteger.toByteArray());	// 转换


		// intToByteArray
		Integer intNumber = Integer.MAX_VALUE/50;		// 一个测试整型数
		bigInteger = new BigInteger(intNumber.toString());
		byteArrayToString(bigInteger.toByteArray());	// 转换
	}

	/** 字节数组字符串显示 */
	private static void byteArrayToString(byte[] byteArray)
	{
		System.out.print("byte[" + byteArray.length + "] = \t");
		for(byte byteValue : byteArray)
		{
			System.out.print(byteValue + "\t");
		}
		System.out.println();
		System.out.println("*******************************");
	}
}
 

 

 

---------- 运行Java ----------

byte[15] = 35 -122 -14 111 -63 0 0 0 86 -19 1 -7 -78 -113 92

*******************************

byte[8] = 2 -113 92 40 -11 -62 -113 92

*******************************

byte[4] = 2 -113 92 40

*******************************

 

输出完成 (耗时 0 秒) - 正常终止

 

 

 

 

方法二

利用移位和与0xFF按位与操作,每8位地获取数据存入字节数组,将数值转换成字节型数组byte[]。

 

 

主要代码:

 

/**
 * Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)
 * All rights reserved.
 * Author: Jarg Yee <yeshaoting@gmail.com>
 * http://jarg.iteye.com/
 */

/*
 * 整数(int,long)转换成字节型数组(byte[])
 */
public class IntegerToByteArrayUtil2
{
	private static final byte byteLength = 8;	// 字节位长

	/** for debugging. */
	public static void main(String[] args)
	{

		Long longNumber = Long.MAX_VALUE/50;		// 一个测试整型数
		Integer intNumber = Integer.MAX_VALUE/50;	// 一个测试整型数

		byteArrayToString(numberToByteArray(longNumber));
		byteArrayToString(numberToByteArray(intNumber));
	}


	/** 数值转换成字节型数组 */
	private static byte[] numberToByteArray(Object number)
	{
		if(number instanceof Long)
		{
			return longToByteArray((Long)number, 8);
		}
		else if(number instanceof Integer)
		{
			return intToByteArray((Integer)number, 4);
		}
		else
		{
			return null;
		}
	}


	/*
		整型32bit转换成字节型8bit数组
		@param number 待求数值
		@param length 数值所占字节数
	 */
	private static byte[] intToByteArray(int number, int length)
	{
		byte[] byteArray = new byte[length]; 

		int shiftNum = 0;	// 移位数
		for(int i=0; i<length; i++)
		{
			shiftNum = (length-i-1)*byteLength;
			byteArray[i] = (byte)((number >> shiftNum) & 0xFF);
		}
		return byteArray;
	}


	/*
		整型64bit转换成字节型8bit数组
		@param number 待求数值
		@param length 数值所占字节数
	 */
	private static byte[] longToByteArray(long number, int length)
	{
		byte[] byteArray = new byte[length]; 

		int shiftNum = 0;	// 移位数
		for(int i=0; i<length; i++)
		{
			shiftNum = (length-i-1)*byteLength;
			byteArray[i] = (byte)((number >> shiftNum) & 0xFF);
		}
		return byteArray;
	}


	/** 字节数组字符串显示 */
	private static void byteArrayToString(byte[] byteArray)
	{
		System.out.print("byte[] = \t");
		for(byte byteValue : byteArray)
		{
			System.out.print(byteValue + "\t");
		}
		System.out.println();
		System.out.println("*******************************");
	}
}
 

 

 

运行结果:

---------- 运行Java ----------

byte[] = 2 -113 92 40 -11 -62 -113 92

*******************************

byte[] = 2 -113 92 40

*******************************

 

输出完成 (耗时 0 秒) - 正常终止

 

 

 

 

方法三

利用ByteArrayOutput的toByteArray()方法。先将整数写入到字节流中,然后通过该类的toByteArray()方法,将流中的整数转换成字节型数组。

 

 

主要代码:

/**
 * Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)
 * All rights reserved.
 * Author: Jarg Yee <yeshaoting@gmail.com>
 * http://jarg.iteye.com/
 */

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

/*
 * 整数(int,long)转换成字节型数组(byte[])
 */
public class IntegerToByteArrayUtil3
{
	
	/** for debugging. */
	public static void main(String[] args) throws Exception
	{

		Long longNumber = Long.MAX_VALUE/50;		// 一个测试整型数
		Integer intNumber = Integer.MAX_VALUE/50;	// 一个测试整型数
		

		byteArrayToString(numberToByteArray(longNumber));
		byteArrayToString(numberToByteArray(intNumber));
	}


	/** 数值转换成字节型数组 */
	private static byte[] numberToByteArray(Object number) throws Exception
	{
		if(number instanceof Long)
		{
			return longToByteArray((Long)number);
		}
		else if(number instanceof Integer)
		{
			return intToByteArray((Integer)number);
		}
		else
		{
			return null;
		}
	}
	
	
	/** 整型32bit转换成字节型8bit数组 */
	private static byte[] intToByteArray(int number) throws Exception
	{
		ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
		DataOutputStream out = new DataOutputStream(byteOutput);
		out.writeInt(number);	// 写入到字节流
		
		byte[] byteArray = byteOutput.toByteArray();	// 转换
		
		byteOutput.close();
		out.close();

		return byteArray;
	}
	
	
	/** 长整型64bit转换成字节型8bit数组 */
	private static byte[] longToByteArray(long number) throws Exception
	{
		ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
		DataOutputStream out = new DataOutputStream(byteOutput);
		out.writeLong(number);	// 写入到字节流
		
		byte[] byteArray = byteOutput.toByteArray();	// 转换
		
		byteOutput.close();
		out.close();

		return byteArray;
	}


	/** 字节数组字符串显示 */
	private static void byteArrayToString(byte[] byteArray)
	{
		System.out.print("byte[" + byteArray.length + "] = \t");
		for(byte byteValue : byteArray)
		{
			System.out.print(byteValue + "\t");
		}
		System.out.println();
		System.out.println("*******************************");
	}
}
 

 

 

运行结果:

---------- 运行Java ----------

byte[8] = 2 -113 92 40 -11 -62 -113 92

*******************************

byte[4] = 2 -113 92 40

*******************************

 

输出完成 (耗时 0 秒) - 正常终止

 

分享到:
评论

相关推荐

    易语言字节集转换到字节型数组

    在某些情况下,我们需要将字节集的数据转换成字节型数组,以便进行特定的操作,如解析结构体或与C/C++等其他语言进行接口通信。 在易语言中实现字节集到字节型数组的转换,通常涉及以下几个步骤: 1. **创建字节型...

    易语言整数到字节数组

    在易语言中,我们经常需要将整数转换为字节数组,以便进行进一步的处理或传递。这个过程通常涉及数据的位运算和数组操作。例如,一个32位的整数在内存中占据4个字节,从高位到低位分别是最高有效位(MSB)到最低有效...

    易语言源码易语言字节集转换到字节型数组源码.rar

    字节集是易语言中一种存储二进制数据的集合,可以理解为一个字节数组。它允许我们在不预先知道具体长度的情况下动态地添加、删除或访问字节。字节集常用于处理二进制文件、网络数据传输等场合。 2. 字节型数组: ...

    易语言字节集与字节数组快速互转

    在实际编程中,根据需求,有时我们需要将字节集转换为字节数组,或者反过来,以便进行各种数据处理。 转换的核心在于理解这两种数据类型的本质和特性。字节集是易语言特有的数据结构,它以集合的形式存储字节,不...

    易语言字节型数组演示

    在这个“易语言字节型数组演示”中,我们将探讨字节型数组的使用,包括字节集的插入、排序以及如何将字节集转换成字节型数组。 首先,字节型数组在易语言中是存储二进制数据的基本数据类型,通常用于处理底层的内存...

    易语言字节型数组演示源码

    6. **转换其他数据类型**:易语言允许将字节型数组与其他数据类型相互转换,例如转换为整数或字符串。转换为整数: ```易语言 .整数 数值 数值 = 字节集转整数(我的字节集, 0, 4, 1) // 以字节集的前4个字节转换为...

    TIA博途-整数拆分到字节数组中-全局FC库文件-V15版本.zip

    在这种情况下,我们有一个专门处理整数到字节数组转换的全局FC,它可以方便地集成到你的程序中,无需从头编写相同的转换逻辑。 要理解这个过程,首先我们需要知道整数是如何存储的。在二进制系统中,整数由最高位的...

    LabVIEW,字节数组至数值转换

    LabVIEW程序,功能:将4字节的unsigned char输入组合成1个32-bit int值,若输入字节数不等于4则报错。

    易语言字节集转换到字节型数组源码-易语言

    在这个源码中,`字节集变量`是待转换的字节集,`变量_字节数组`则是转换后的字节型数组。这段代码首先获取字节集的大小,然后定义一个相应长度的字节型数组。接着,通过循环将字节集中的每个字节复制到字节型数组中...

    易语言字节型数组演示源码-易语言

    6. **数据转换**:如何将其他类型的数据(如整数、浮点数)转换为字节型数组,以及反向操作,即从字节型数组中恢复原始数据。 学习这个源码示例,用户不仅可以掌握易语言中字节型数组的基础操作,还能了解到如何在...

    vb6.0 字节数组和字符串的相互转换.rar

    或者将字符串转换成字节数组,写入二进制文件。 示例: ```vb ' 读取二进制文件到字节数组 Open "binaryfile.bin" For Binary As #1 Dim fileByteArray() As Byte ReDim fileByteArray(LOF(1) - 1) Get #1, , ...

    js读取本地文件到字节数组

    为了实现这一功能,通常的做法是将文件内容转换为字节数组(byte array),再传递给后端进行进一步处理。这种方式不仅适用于Web应用程序,也便于与桌面应用程序保持一致的接口设计。本文将详细介绍如何使用...

    易语言源码易语言整数到字节数组源码.rar

    在“易语言源码易语言整数到字节数组源码.rar”这个压缩包中,我们可以看到一个关于将整数转换成字节数组的源代码实现。这是一个基础但非常实用的编程任务,特别是在处理二进制数据或网络通信时。下面将详细介绍这个...

    易语言长整数到十六进制和字节集

    长整数转换为字节集,意味着将长整数的二进制表示拆分成单独的字节,并存储在一个字节数组中。这对于处理底层的二进制数据交换非常有用。 在实际操作中,实现长整数到十六进制和字节集的转换,可能需要以下步骤: ...

    J2ME 字符型转化成字节数组

    ### J2ME 字符型转化成字节数组 #### 知识点一:J2ME简介 J2ME(Java 2 Platform, Micro Edition)是Sun Microsystems为嵌入式和移动设备设计的一种Java平台。它包括了一套适用于资源受限设备(如手机、PDA和个人...

    图片转换成十六进制数组保存的工具

    C语言中的`unsigned char`类型通常用来表示8位的二进制数,刚好对应一个字节,可以存储0到255之间的整数值,足够表示RGB的一个分量。因此,我们创建一个三维数组,如`unsigned char image[宽度][高度][3]`,其中`...

    易语言数组保存与恢复

    将 整数型 到 字节集 阵列元素[循环索引], 数组字节集, 4 // 将整数转换为字节集 .end循环 .写文件 “数组保存.txt”, 数组字节集 // 将字节集写入文件 ``` 然后,我们来看数组的恢复。恢复数组时,我们需要从文件...

    labview 4字节一维数组整数转为4字节16进制字符串.vi

    labview 读取的一维数组(整数)转换成16进制的字符串,方便大家进行数据处理。有问题可以留言咨询,互相学习

    整形数组与字符数组相互转换

    3. 序列化与反序列化:将整形数组转换为字符数组的过程可以看作是序列化,即将结构化的数据转化为字节流,方便存储或传输。反之,将字符数组还原为整形数组是反序列化,即从字节流中恢复原始数据结构。 4. 数据库...

    C#结构体和C++字节数组的转换

    在跨语言通信或数据交换中,尤其是在涉及到C#与C++之间进行TCP通信时,由于两者数据表示方式的差异,可能会遇到将C#中的结构体转换为C++可理解的字节数组,或者反过来的过程。本文将详细介绍如何在C#中实现结构体与...

Global site tag (gtag.js) - Google Analytics