`
yeshaoting
  • 浏览: 666908 次
  • 性别: 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 秒) - 正常终止

 

分享到:
评论

相关推荐

    易语言整数到字节数组

    易语言整数到字节数组源码,整数到字节数组,十到十六,到十六进制文本

    LabVIEW,字节数组至数值转换

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

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

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

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

    注意:源程序是为qt写的,不过基本上都用的是c语言,下载之后稍作修改就可以在vc++上运行。将int数组转成uchar数组保存到数据库,然后再取出来将uchar数组还原成int数组。

    java数据类型转byte数组

    ip地址转4字节byte,char转2字节byte,byte数组转char,int整数转换为4字节的byte数组,byte数组转换为int整数,double类型转8字节数组,8位数组转double,long整数转换为8字节的byte数组,short整数转换为2字节的...

    数字类型 转换 字节数组

    * 对数字和字节进行转换。 * 基础知识: * 假设数据存储是以大端模式存储的: * byte: 字节类型 占8位二进制 00000000 * char: 字符类型 占2个字节 16位二进制 byte[0] byte[1] * int : ...

    打包和解包数据:将整数数据数组转换为字节数组,反之亦然。-matlab开发

    此条目提供将整数数据数组转换为字节数组的函数和块,反之亦然。 提供的函数是packData 和unpackData。 对于 Simulink,提供的模块称为“Pack Data”和“Unpack Data”。 有关显示如何使用功能和块的示例,请参见主...

    Python3之字节串bytes与字节数组bytearray的使用详解

    bytes(整数可迭代对象) 用可迭代对象创建一个字节串 bytes(整数n) 生成n个值为0的字节串 bytes(字符串,encoding=’utf-8′) 转码 字节串的运算:同其他序列的运算 +、+=、*、*= &lt;、&lt;=、&gt;、&gt;=、!=、== in / ...

    bnase64加密解密函数

    然后把随机整数与字符串从右边开始逐字符交叉结合,从右边截取要求的长度,然后返回把剩下的部分接到前面,将字符串转换成字节数组将字节数组与随机数交叉结合,组成一个新的字节数组,长度为原数组长度*2+2,字节...

    AppUtils.zip

    13.将字节数组转换为十六进制字符数组 14.将字节数组转换为十六进制字符串 15.将十六进制字符串转换为字节数组 16.将十六进制字符转换成一个整数 17.截取字节数组 18.int转byte数组 19.byte数组转int 20.字节数组...

    易语言-自定义数据类型与字节集互转

    字节集组成 1字节 #字节型 2字节 #短整数型 4字节 #整数型 8字节 #长整数型 4字节 #小数型 8字节 #双精度小数型 4字节 #逻辑型 8字节 #日期时间型 ...数组型的自定义类型:前4字节是数组成员数,其他的和上面一样

    J2ME 数据类型的相互转换方法

    整数到字节数组的转换 字节数组到整数的转换

    QT/C++实现:四字节十六进制与浮点数相互转化——三种方法(亲自验证源码)

    利用QT/C++实现的三种方法进行十六进制与浮点数相互转化:直接方法、强制转化法和union与struct转化法,经验证有效,并附带源码。

    cl-intbytes:可互换地对任意基整数和字节数组进行编码解码

    cl-intbytes-在任意基整数和字节数组之间可互换地转换 受到启发。 用法 * (ql:quickload :cl-intbytes) ; =&gt; (:CL-INTBYTES) * (use-package :intbytes) ; =&gt; T 为了方便/方便地进行编码/解码,请使用int32-&gt;...

    补丁模块(带源码)InlinePatch,Hook,内存DLL注入等等

    参数 结果数组, 整数型, 参考 数组, 用来保存搜索的结果 .子程序 取汇编指令长度, 整数型, 公开, 返回指定进程指定地址处的首条汇编指令的长度。注:计算方法使用的是LDX32 .参数 进程ID, 整数型, , 进程ID .参数 ...

    python的数字转字节和字节转数字【有正负】

    对于小于零的数字或者字节,转换时python默认会先将其转换为反码 数字转字节 int.to_bytes(length,byteorder,*signed) 整数.to_bytes(字节长度,字节顺序,*字节符号) 字节顺序: 高位在前:'big' 低位在前:little...

    labview 十进制转换为二进制

    labview 十进制转换为二进制,比较简单的一种方法,还可以用在其他方面

    易语言辅助模块

    参数 窗口句柄, 整数型, 参考 数组, 装载窗口句柄的数组变量,请用循环取出 .子程序 清除窗口, 逻辑型, 公开, 成功返回(真),失败返回(假) .参数 窗口句柄, 整数型 .子程序 取窗口标题, 文本型, 公开, 成功返回...

    易语言 茶凉专用模块

    子程序 八到十, 整数型, 公开, 将八进制转换成十进制(返回十进制整数) .参数 八进制文本, 文本型, , 欲转换的八进制文本 .子程序 彩色字体, , 公开, 彩色动态字体 感谢[梦飞鸟] .参数 内容, 文本型 .参数 窗口句柄,...

    atan2查表算法、linux内核kfifo脱离平台实现、crc校验算法、数值序列化等通用库

    2、convertor.h 支持整数、浮点与字节数组的互相转换,支持大小端设定 3、crc.h 包含crc16-ccitt和crc32的算法实现 4、fifo.h 参考linux kernel的kfifo的实现,无锁读写,效率高 5、math_fast.h 开根号sqrt的快速...

Global site tag (gtag.js) - Google Analytics