0 0

byte[]和int的转换5

当int的二进制值在数组中的一个byte里面不能表示时(超过八位)在byte数组里面是以怎样的方式存放的?网上也没有好一点的讲解,有好资料的希望共享一下

问题补充:
jobar 写道
大整数的话用BigInteger,转byte[] 用它的方法toByteArray

我想问的是这个int在byte数组里面是怎样存放的,一个byte不能表示这个int的二进制值的时候,难道是用多个byte将int拆分每个byte保存int的一部分值,几个byte的值求和就成了这个int的值?

问题补充:我把代码贴出来吧,为了实现UDP转RTP我需要拼接字符数组作为RTP的包头。
public static byte[] VPXM = new byte[5];
public static byte[] payLoad = new byte[7];
public static byte[] generalHeader = new byte[12];
public static void setGeneralHeader() {
		headerIsInited = true;
		ByteUtil.int2byte(128, VPXM, 0);
		ByteUtil.int2byte(96, payLoad, 0);
		System.arraycopy(VPXM, 0, generalHeader, 0, VPXM.length);
		System.arraycopy(payLoad, 0, generalHeader, VPXM.length, payLoad.length);
	}
public static void int2byte(int n, byte buf[], int offset) {
		buf[offset] = (byte) (n >> 24);
		buf[offset + 1] = (byte) (n >> 16);
		buf[offset + 2] = (byte) (n >> 8);
		buf[offset + 3] = (byte) n;
	}

我想要的达到的效果是VPXM的二进制值为10000000(十六进制的值为80),payLoad是拿到了正确的值

问题补充:现在的问题是我调用同样的方法128编程字符数组后返回给我的值是不正确的,我不知道怎么处理

问题补充:
117668975 写道
不太明白楼主想问的是什么,不过大概说下byte和int的关系吧,一个int占4个byte,例如int 1的话,byte就是(0x00,0x00,0x00,0x01),int 256的话,byte就是(0x00,0x00,0x01,0x00),不知道是不是你想要的

0x在java里面是16进制吧

问题补充:有没有什么方法可以直接将二进制字符串的值赋值给byte[],例如
String str = "1000000";
byte[] b = strToByteArray(str); //  假设有这么个方法

问题补充:
jobar 写道
引用
有没有什么方法可以直接将二进制字符串的值赋值给byte[],例如
Java代码  收藏代码

    String str = "1000000"; 
    byte[] b = strToByteArray(str); //  假设有这么个方法 


当然有了,用apache commons-codec的
BinaryCodec类专门用来干这种事的

谢谢你提供的资料,我还有一个问题就是包头的序号和时间戳需要频繁变换,这样系统的开销会很大,内存碎片会很多吧,做这样的操作的时候应该注意一些什么问题。

问题补充:byte[]数组能不能进行指定位置的byte的替换(着也是我问数值在byte数组里面是以什么样的方式存放的原因),有没有相关的算法或者常用的处理方式,用java来处理包基本找不到资料,有哪位大虾有经验的可以指导一下我

问题补充:
117668975 写道
调用同样的方法128编程字符数组后返回给我的值是不正确的
正确的吧,不知道你说哪里不正确了

0 0 0 11111111111111111111111110000000 0 end VPXM:5
0 0 0 1100000 0 0 0 end payLoad:7
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 end seqNum:16
0 0 1110 10000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 end timeStamp:32
0 0 11111111111111111111111110101110 11111111111111111111111111000110 11111111111111111111111110110111 1010011 1101110 11111111111111111111111111000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 end SSRC:32
这是打印出来的内容,这是赋值
ByteUtil.int2byte(128, VPXM, 0);
		ByteUtil.int2byte(96, payLoad, 0);
		ByteUtil.int2byte(1, seqNum, 0);
		ByteUtil.int2byte(timeStampDifference, timeStamp, 0);
		SSRC = ByteUtil.long2bytes(192168502456000L);

问题补充:发帖讨论始终不方便,这是我的QQ540620361,有哪位前辈愿意指导的可以加我QQ
2012年4月09日 15:02

5个答案 按时间排序 按投票排序

0 0

采纳的答案

不太明白楼主想问的是什么,不过大概说下byte和int的关系吧,一个int占4个byte,例如int 1的话,byte就是(0x00,0x00,0x00,0x01),int 256的话,byte就是(0x00,0x00,0x01,0x00),不知道是不是你想要的

2012年4月09日 16:15
0 0

调用同样的方法128编程字符数组后返回给我的值是不正确的
正确的吧,不知道你说哪里不正确了

2012年4月10日 12:07
0 0

引用
byte[]数组能不能进行指定位置的byte的替换(着也是我问数值在byte数组里面是以什么样的方式存放的原因),有没有相关的算法或者常用的处理方式,用java来处理包基本找不到资料,有哪位大虾有经验的可以指导一下我


byte[]已经是数组了,当然可以指定位置替换啊。 随便替换

2012年4月10日 10:00
0 0

引用
有没有什么方法可以直接将二进制字符串的值赋值给byte[],例如
Java代码  收藏代码

    String str = "1000000"; 
    byte[] b = strToByteArray(str); //  假设有这么个方法 


当然有了,用apache commons-codec的
BinaryCodec类专门用来干这种事的

2012年4月09日 17:31
0 0

大整数的话用BigInteger,转byte[] 用它的方法toByteArray

2012年4月09日 15:26

相关推荐

    int类型和byte数组之间的转换

    写一个方法,将int类型转换为字节数组,输入任意int类型整型,输出字节数组;写第二个方法,输入字节数组,输出对应int类型数据。

    Java数值类型与byte数组相互转换

    Java bytes数组与基本类型的相互转换 Int -> Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -> Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...

    byte数组转换工具类 byte数组转int,byte数组转short,short转byte数组

    byte数组操作的工具类,支持byte数组转int,int转byte数组,byte数组转short,short转byte数组。。。 下载的人多了,csdn会自动涨分,现在可以手动调了,我给降到最低了

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

    2. **int转byte**:将int转换为byte数组时,我们需要将int的每个字节分离到byte中。这可以通过右移并用0xFF进行AND操作来实现。例如,`int a = 1246; byte[] b = new byte[4]; b[0] = (byte) (a >> 24 & 0xFF);` ...

    Cstring 与BYTE类型之间转换

    ### Cstring 与 BYTE 类型之间转换 在计算机编程领域,数据类型的转换是十分常见的操作。尤其是在处理网络通信、文件读写等场景时,经常需要将字符串类型(如`CString`)与字节类型(如`BYTE`)进行相互转换。这种...

    int、char、double与byte类型之间相互转换

    本文将详细介绍如何实现int、char、double与byte类型之间的相互转换,并通过具体的示例代码来阐述每一种转换方法。 ### 一、int类型转换为byte数组 #### 方法:intToByte() 该方法接收一个int类型的参数`number`,...

    S7-1200中将BYTE类型数据转换成char类型数据的具体方法.docx

    本教程将详细介绍如何在TIA博途环境下将BYTE类型的数据转换成char类型数据,以及在转换过程中需要注意的事项。 首先,创建一个TIA博途的新测试项目,然后在程序块中定义一个DB块。在这个DB块中,我们需要创建两个...

    Java中byte转int的方法

    用强制类型转换:int i = (int) aByte,  比如:若aByte=0xff(即数值为-1)。则转化为int后。i为0xffffffff。数值仍为-1。  2)保持低字节中各个位不变,3个高字节所实用0填充  应用场景:编解码操作,  ...

    String(含Hex)与Byte数组互相转换[代码]

    在编程中,数据类型之间的转换是非常常见的操作,尤其是在处理二进制数据和文本数据时。在Java或类似的编程语言中,我们经常会遇到需要将字符串(String)与字节数组(Byte[])以及十六进制表示的字符串(Hex)进行...

    C# Byte数组转Int32 Short Float(浮点数)

    标题和描述提到的“C# Byte数组转Int32 Short Float(浮点数)”是指将字节数组中的数据转换为整型(Int32)、短整型(Short)以及浮点数(Float)的过程。以下是对这个主题的详细解释: **字节数组基础** 字节数组...

    java基本类型与byte数组互相转换.pdf

    字符类型在 Java 中是 16 位的 Unicode 字符,转换成 byte 数组需要将字符类型转换成 int 类型,然后将 int 类型转换成 byte 数组。例如: ```java public static byte[] charToByteArr(char ch) { byte[] b = new...

    在Java中int和byte[]的相互转换

    为了将int转换为byte数组,我们可以逐位提取int的每一位,并将其存储到byte数组中。以下是一个实现此功能的函数: ```java public static byte[] intToBytes(int i) { byte[] bytes = new byte[4]; bytes[0] = ...

    java基本类型与byte数组互相转换.doc

    例如,在将short类型转换为byte数组时,我们需要创建一个长度为2的byte数组,而在将int类型转换为byte数组时,我们需要创建一个长度为4的byte数组。 除了将基本类型转换为byte数组外,我们还可以将byte数组转换为...

    go语言中int和byte转换方式

    这意味着将int转换为byte时,如果int的值超出了byte的表示范围,超出的部分将会被舍弃。而将int32或int64类型转换为byte数组则需要稍微复杂的操作。由于这些数据类型可能超过一个字节,我们需要通过位操作来将各个...

    BYTE类型之间相互转换

    例如,将`BYTE`转换为`int`: ```cpp BYTE byteValue = 123; int intValue = byteValue; //隐式转换 int intValue2 = (int)byteValue; //显式转换 ``` 2. **使用类型别名** 在C++11及更高版本中,可以使用`...

    JAVA转byte[]为int,long,double

    在Java编程语言中,将`byte[]`数组转换为`int`, `long`, 和 `double`类型的数据是一项常见的任务,特别是在处理二进制数据或网络通信时。以下将详细讲解如何进行这些转换,并提供相关代码示例。 1. **转换byte[]到...

    java byte数组与int,long,short,byte的转换实现方法

    本文将详细介绍如何在Java中将`byte`数组与其他基本数据类型(如`int`、`long`、`short`、`byte`)之间进行转换。 首先,我们来看`byte`到`int`的转换。Java中的`byte`类型是8位的,取值范围是-128到127。如果要将...

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

    本文主要探讨了如何在`byte`、`byte`数组、`int`和`long`之间进行转换。以下是对这些转换方法的详细解释: 1. **Java中byte和int之间的转换** `byte`和`int`之间的转换相对简单。Java中的`byte`是8位(1字节)的...

    C# DLL byte数据转换,用于PLC读取Byte数据类型转换,直接调用dll输入函数名称有注释,就可以使用,小创作

    public bool ByteToBool(byte[] bytes, int startindex, int Pointer) 读取位 public Int32 BytesToInt32(byte[] bytes, int startindex) 读取4位整数 public short BytesToShort(byte[] bytes, int startindex)...

    Qt中QString、QByteArray、int、double之间转换 - 苦涩的茶 - 博客园1

    本文主要探讨了如何在QString、QByteArray、int和double之间进行转换。了解这些转换方法对于编写Qt应用程序至关重要。 首先,QString是Qt提供的一种用于处理文本字符串的类,支持Unicode字符集。QByteArray则是一个...

Global site tag (gtag.js) - Google Analytics