-
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,有哪位前辈愿意指导的可以加我QQ2012年4月09日 15:02
5个答案 按时间排序 按投票排序
-
采纳的答案
不太明白楼主想问的是什么,不过大概说下byte和int的关系吧,一个int占4个byte,例如int 1的话,byte就是(0x00,0x00,0x00,0x01),int 256的话,byte就是(0x00,0x00,0x01,0x00),不知道是不是你想要的
2012年4月09日 16:15
-
引用byte[]数组能不能进行指定位置的byte的替换(着也是我问数值在byte数组里面是以什么样的方式存放的原因),有没有相关的算法或者常用的处理方式,用java来处理包基本找不到资料,有哪位大虾有经验的可以指导一下我
byte[]已经是数组了,当然可以指定位置替换啊。 随便替换2012年4月10日 10:00
-
引用有没有什么方法可以直接将二进制字符串的值赋值给byte[],例如
Java代码 收藏代码
String str = "1000000";
byte[] b = strToByteArray(str); // 假设有这么个方法
当然有了,用apache commons-codec的
BinaryCodec类专门用来干这种事的2012年4月09日 17:31
相关推荐
写一个方法,将int类型转换为字节数组,输入任意int类型整型,输出字节数组;写第二个方法,输入字节数组,输出对应int类型数据。
Java bytes数组与基本类型的相互转换 Int -> Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -> Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...
byte数组操作的工具类,支持byte数组转int,int转byte数组,byte数组转short,short转byte数组。。。 下载的人多了,csdn会自动涨分,现在可以手动调了,我给降到最低了
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`)进行相互转换。这种...
本文将详细介绍如何实现int、char、double与byte类型之间的相互转换,并通过具体的示例代码来阐述每一种转换方法。 ### 一、int类型转换为byte数组 #### 方法:intToByte() 该方法接收一个int类型的参数`number`,...
本教程将详细介绍如何在TIA博途环境下将BYTE类型的数据转换成char类型数据,以及在转换过程中需要注意的事项。 首先,创建一个TIA博途的新测试项目,然后在程序块中定义一个DB块。在这个DB块中,我们需要创建两个...
用强制类型转换:int i = (int) aByte, 比如:若aByte=0xff(即数值为-1)。则转化为int后。i为0xffffffff。数值仍为-1。 2)保持低字节中各个位不变,3个高字节所实用0填充 应用场景:编解码操作, ...
在编程中,数据类型之间的转换是非常常见的操作,尤其是在处理二进制数据和文本数据时。在Java或类似的编程语言中,我们经常会遇到需要将字符串(String)与字节数组(Byte[])以及十六进制表示的字符串(Hex)进行...
标题和描述提到的“C# Byte数组转Int32 Short Float(浮点数)”是指将字节数组中的数据转换为整型(Int32)、短整型(Short)以及浮点数(Float)的过程。以下是对这个主题的详细解释: **字节数组基础** 字节数组...
字符类型在 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] = ...
例如,在将short类型转换为byte数组时,我们需要创建一个长度为2的byte数组,而在将int类型转换为byte数组时,我们需要创建一个长度为4的byte数组。 除了将基本类型转换为byte数组外,我们还可以将byte数组转换为...
这意味着将int转换为byte时,如果int的值超出了byte的表示范围,超出的部分将会被舍弃。而将int32或int64类型转换为byte数组则需要稍微复杂的操作。由于这些数据类型可能超过一个字节,我们需要通过位操作来将各个...
例如,将`BYTE`转换为`int`: ```cpp BYTE byteValue = 123; int intValue = byteValue; //隐式转换 int intValue2 = (int)byteValue; //显式转换 ``` 2. **使用类型别名** 在C++11及更高版本中,可以使用`...
在Java编程语言中,将`byte[]`数组转换为`int`, `long`, 和 `double`类型的数据是一项常见的任务,特别是在处理二进制数据或网络通信时。以下将详细讲解如何进行这些转换,并提供相关代码示例。 1. **转换byte[]到...
本文将详细介绍如何在Java中将`byte`数组与其他基本数据类型(如`int`、`long`、`short`、`byte`)之间进行转换。 首先,我们来看`byte`到`int`的转换。Java中的`byte`类型是8位的,取值范围是-128到127。如果要将...
本文主要探讨了如何在`byte`、`byte`数组、`int`和`long`之间进行转换。以下是对这些转换方法的详细解释: 1. **Java中byte和int之间的转换** `byte`和`int`之间的转换相对简单。Java中的`byte`是8位(1字节)的...
public bool ByteToBool(byte[] bytes, int startindex, int Pointer) 读取位 public Int32 BytesToInt32(byte[] bytes, int startindex) 读取4位整数 public short BytesToShort(byte[] bytes, int startindex)...
本文主要探讨了如何在QString、QByteArray、int和double之间进行转换。了解这些转换方法对于编写Qt应用程序至关重要。 首先,QString是Qt提供的一种用于处理文本字符串的类,支持Unicode字符集。QByteArray则是一个...