转自:http://freewind886.blog.163.com/blog/static/661924642011810236100/
int -> byte
可以直接使用强制类型转换: byte b = (byte) aInt;
这个操作是直接截取int中最低一个字节,如果int大于255,则值就会变得面目全非了。
对于通过InputStream.read()获取的int,可采用这个方法将值还原。
byte -> int
这里有两种情况,一种是要求保持值不变,例如进行数值计算,可采用强制类型转换:int i = (int) aByte;
另一种是要求保持最低字节中各个位不变,3个高字节全部用0填充,例如进行编解码操作,
则需要采用位操作:int i = b & 0xff;
int InputStream.read()
该函数返回一个int类型,范围从0至255,如果到达流末尾,返回-1。通过ByteArrayInputStream的源码可以看到是如何从byte转到int
public synchronized int read() {
return (pos < count) ? (buf[pos++] & 0xff) : -1;
}
int <-> byte[]
代码转自:java int 与 byte转换
public static byte[] toByteArray(int iSource, int iArrayLen) {
byte[] bLocalArr = new byte[iArrayLen];
for (int i = 0; (i < 4) && (i < iArrayLen); i++) {
bLocalArr[i] = (byte) (iSource >> 8 * i & 0xFF);
}
return bLocalArr;
}
// 将byte数组bRefArr转为一个整数,字节数组的低位是整型的低字节位
public static int toInt(byte[] bRefArr) {
int iOutcome = 0;
byte bLoop;
for (int i = 0; i < bRefArr.length; i++) {
bLoop = bRefArr[i];
iOutcome += (bLoop & 0xFF) << (8 * i);
}
return iOutcome;
}
Byte和int之间的转换
/**
*将32位的int值放到4字节的<a href="http://www.ztyhome.com/tag/byte/" title="查看 byte 中的全部文章"; target="_blank">byte</a>[]里
* @param num
* @return
*/
public static byte[] int2byteArray(int num) {
byte[] result = new byte[4];
result[0] = (byte)(num >>> 24);//取最高8位放到0下标
result[1] = (byte)(num >>> 16);//取次高8为放到1下标
result[2] = (byte)(num >>>
; //取次低8位放到2下标
result[3] = (byte)(num ); //取最低8位放到3下标
return result;
}
/**
* 将4字节的byte数组转成一个int值
* @param b
* @return
*/
public static int byteArray2int(byte[] b){
byte[] a = new byte[4];
int i = a.length - 1,j = b.length - 1;
for (; i >= 0; i--,j--) {//从b的尾部(即int值的低位)开始copy数据
if(j >= 0)
a[i] = b[j];
else
a[i] = 0;//如果b.length不足4,则将高位补0
}
int v0 = (a[0] & 0xff) << 24;//&0xff将byte值无差异转成int,避免Java自动类型提升后,会保留高位的符号位
int v1 = (a[1] & 0xff) << 16;
int v2 = (a[2] & 0xff) << 8;
int v3 = (a[3] & 0xff) ;
return v0 + v1 + v2 + v3;
}
short和byte的互转
/**
* 转换short为byte
*
* @param b
* @param s 需要转换的short
* @param index
*/
public static void putShort(byte b[], short s, int index) {
b[index + 1] = (byte) (s >>
;
b[index + 0] = (byte) (s >> 0);
}
/**
* 通过byte数组取到short
*
* @param b
* @param index 第几位开始取
* @return
*/
public static short getShort(byte[] b, int index) {
return (short) (((b[index + 1] <<
| b[index + 0] & 0xff));
}
byte和char类型的转换
/**
* 字符到字节转换
*
* @param ch
* @return
*/
public static void putChar(byte[] bb, char ch, int index) {
int temp = (int) ch;
// byte[] b = new byte[2];
for (int i = 0; i < 2; i ++ ) {
// 将最高位保存在最低位
bb[index + i] = new Integer(temp & 0xff).byteValue();
temp = temp >> 8; // 向右移8位
}
}
/**
* 字节到字符转换
*
* @param b
* @return
*/
public static char getChar(byte[] b, int index) {
int s = 0;
if (b[index + 1] > 0)
s += b[index + 1];
else
s += 256 + b[index + 0];
s *= 256;
if (b[index + 0] > 0)
s += b[index + 1];
else
s += 256 + b[index + 0];
char ch = (char) s;
return ch;
}
byte和float的转换
/**
* float转换byte
*
* @param bb
* @param x
* @param index
*/
public static void putFloat(byte[] bb, float x, int index) {
// byte[] b = new byte[4];
int l = Float.floatToIntBits(x);
for (int i = 0; i < 4; i++) {
bb[index + i] = new Integer(l).byteValue();
l = l >> 8;
}
}
/**
* 通过byte数组取得float
*
* @param bb
* @param index
* @return
*/
public static float getFloat(byte[] b, int index) {
int l;
l = b[index + 0];
l &= 0xff;
l |= ((long) b[index + 1] <<
;
l &= 0xffff;
l |= ((long) b[index + 2] << 16);
l &= 0xffffff;
l |= ((long) b[index + 3] << 24);
return Float.intBitsToFloat(l);
}
byte和double转换
/**
* double转换byte
*
* @param bb
* @param x
* @param index
*/
public static void putDouble(byte[] bb, double x, int index) {
// byte[] b = new byte[8];
long l = Double.doubleToLongBits(x);
for (int i = 0; i < 4; i++) {
bb[index + i] = new Long(l).byteValue();
l = l >> 8;
}
}
/**
* 通过byte数组取得float
*
* @param bb
* @param index
* @return
*/
public static double getDouble(byte[] b, int index) {
long l;
l = b[0];
l &= 0xff;
l |= ((long) b[1] <<
;
l &= 0xffff;
l |= ((long) b[2] << 16);
l &= 0xffffff;
l |= ((long) b[3] << 24);
l &= 0xffffffffl;
l |= ((long) b[4] << 32);
l &= 0xffffffffffl;
l |= ((long) b[5] << 40);
l &= 0xffffffffffffl;
l |= ((long) b[6] << 48);
l &= 0xffffffffffffffl;
l |= ((long) b[7] << 56);
return Double.longBitsToDouble(l);
}
}
分享到:
相关推荐
2. **int转byte**:将int转换为byte数组时,我们需要将int的每个字节分离到byte中。这可以通过右移并用0xFF进行AND操作来实现。例如,`int a = 1246; byte[] b = new byte[4]; b[0] = (byte) (a >> 24 & 0xFF);` ...
以上就是关于“JAVA转byte[]为int,long,double”的知识讲解,理解这些转换对于处理二进制数据至关重要,尤其是在网络通信、序列化和反序列化等场景中。通过熟练掌握这些转换,你可以更好地处理和解析不同数据类型的...
Java bytes数组与基本类型的相互转换 Int -> Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -> Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...
本文将深入探讨如何在Java中将byte数组与其他基本类型(如short、int、long)进行转换,这些转换在处理二进制数据、网络通信或序列化等方面至关重要。 首先,我们来看byte数组与short之间的转换。在Java中,byte...
byte数组操作的工具类,支持byte数组转int,int转byte数组,byte数组转short,short转byte数组。。。 下载的人多了,csdn会自动涨分,现在可以手动调了,我给降到最低了
字符类型在 Java 中是 16 位的 Unicode 字符,转换成 byte 数组需要将字符类型转换成 int 类型,然后将 int 类型转换成 byte 数组。例如: ```java public static byte[] charToByteArr(char ch) { byte[] b = new...
为了将int转换为byte数组,我们可以逐位提取int的每一位,并将其存储到byte数组中。以下是一个实现此功能的函数: ```java public static byte[] intToBytes(int i) { byte[] bytes = new byte[4]; bytes[0] = ...
在Java编程中,将`int`类型转换为`byte`数组以及从`byte`数组还原回`int`类型是常见的操作,特别是在网络编程中。这是因为网络传输的数据通常以字节流的形式存在,而`int`等基本数据类型需要进行适当的序列化才能...
用强制类型转换:int i = (int) aByte, 比如:若aByte=0xff(即数值为-1)。则转化为int后。i为0xffffffff。数值仍为-1。 2)保持低字节中各个位不变,3个高字节所实用0填充 应用场景:编解码操作, ...
本文将详细介绍如何在Java中将`byte`数组与其他基本数据类型(如`int`、`long`、`short`、`byte`)之间进行转换。 首先,我们来看`byte`到`int`的转换。Java中的`byte`类型是8位的,取值范围是-128到127。如果要将...
- **byte转int**:转换`byte`到`int`时,Java会默认将其视为有符号整数。为了得到无符号的`byte`值,我们需要进行位操作,如`b & 0xFF`,这会移除`byte`的高32位并保留低8位。 2. **Java中byte数组和int之间的转换...
写一个方法,将int类型转换为字节数组,输入任意int类型整型,输出字节数组;写第二个方法,输入字节数组,输出对应int类型数据。
在Java编程中,经常需要处理图像数据,特别是在网络传输或存储时,将图像转换为`byte`数组是一种常见的做法。这不仅可以提高传输效率,还可以方便地进行存储。本文将详细介绍如何使用Java将图片转换为`byte`数组以及...
由于Java中int类型数据占据32 bit,而byte占据8 bit,因此可以将四个byte转换成一个int类型数据。但是,在实际操作中,我们需要考虑到Java中int类型数据是有符号的,最高位为符号位,为0的话表示正数,为1的话表示...
由于Java基本类型和byte数组都是基本的数据结构,因此在Java编程中经常需要将基本类型转换为byte数组,或者将byte数组转换为基本类型。 在上面的代码中,我们可以看到将Java基本类型转换为byte数组的多个方法,每个...
下面,我们将深入探讨如何在Java中实现图像数据与字节数组之间的相互转换,并分析这一过程中的关键步骤和技术细节。 ### 转换Image数据为byte数组 #### 方法一:`imageToBytes`函数解析 在Java中,将`Image`对象...
ip地址转4字节byte,char转2字节byte,byte数组转char,int整数转换为4字节的byte数组,byte数组转换为int整数,double类型转8字节数组,8位数组转double,long整数转换为8字节的byte数组,short整数转换为2字节的...
char short int long float double 转换成byte数组
Java中的int类型占用4个字节(即32位),因此转换后的byte数组长度为4。 ```java public static byte[] intToByte(int number) { int temp = number; byte[] b = new byte[4]; for (int i = b.length - 1; i >= 0...