Java 接收 C/C++ 无符号int数值的方法

由于C/C++
无符号整型int四字节大小,而JAVA只有有符号int,所以JAVA中的int不可以直接接收C/C++无符号整型int,需要用long来接收。但是用long来接收的话字符序列需要转换,高低位互换,可以用JDK里面Integer的reverseBytes()方法来进行互换:

Integer.reverseBytes((int)ReceiveNum)&0xFFFFFFFFL;

Java 接收 C/C++ 无符号int数值的方法,布布扣,bubuko.com

时间: 2024-11-06 17:44:48

Java 接收 C/C++ 无符号int数值的方法的相关文章

java byte转无符号int

import java.io.ByteArrayInputStream; public class Test{ public static void main(String[] args) { byte[] bytes = new byte[]{(byte)-42}; ByteArrayInputStream in = new ByteArrayInputStream(bytes); int result = in.read(); System.out.println("无符号数: \t&quo

有符号int和无符号int的比较

int array[] = {1,2,3,4}; #define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0])) int main() { int d = -1; if(d <= TOTAL_ELEMENTS) printf("TRUE\n"); else printf("FALSE\n"); } sizeof()返回类型为无符号整型unsigned int,因此代码中的TOTAL_ELEMENTS值是unsig

java位运算和无符号运算

计算机在底层使用的是二进制补码进行运算. 计算规则: 正数的原码.反码.补码是其二进制本身. 负数的原码首先计算其二进制数,然后最高位使用1表示负数,反码是最高位不变其它位取反,补码是在反码的基础上进行+1操作. System.out.println( 8 >> 1);//正数进行右移位运算 8的二进制是 0000 0000 0000 0000 0000 0000 0000 1000,进行右移1位得到二进制0000 0000 0000 0000 0000 0000 0000 0100,然后转成

无符号int(十进制/十六进制)转字符串string

std::string uint2string(const uint32_t value, int radix /*= 10*/) { std::string strString = ""; switch (radix) { case 10: strString = std::to_string(value); break; case 16: { char chTemp[64] = { 0 }; sprintf_s(chTemp, "0x%02x", value);

【Java】Arrays中之于int数组的方法,Integer数组与int数组

在java.util.*中,Arrays似乎很有用的样子,似乎用里面的方法就可以避免使用for循环要自己写对数组的查找.初始化.排序等方法了. 一.先说说Arrays中对整形数组真的有用的方法 1.首先是Arrays.toString() 一般,直接用System.out.println()打印数组,比如这样: int array[] = { 8, 7, 100, 88, 6, 4, 5, 33, 10 }; System.out.println(array); 出来的结果是一堆乱码: [Lja

java 无符号byte转换

java中的byte类型是有符号的,值得范围是-128-127 做网络通讯时,接收过来的数据往往都是无符号的byte,值得范围是0-255 因此直接转换时,存储到java显示的值就会有问题 int ori=200; System.out.println("原始byte值:"+ori); Byte b=(byte)ori; System.out.println("java中byte值:"+b); Integer i=b.intValue(); System.out.p

java移位运算符:&lt;&lt;(左移)、&gt;&gt;(带符号右移)和&gt;&gt;&gt;(无符号右移)。

1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 当左移的运算数是int 类型时,每移动1位它的第31位就

java数据类型是有符号的,那与有些无符号的如何区别

一.首先需要明白数据类型有符号与无符号的概念 最明显的区别就是二者表示的范围不同: 无符号数中,所有的位都用于直接表示该值的大小.有符号数中最高位用于表示正负,所以,当为正值时,该数的最大值就会变小.我们举一个字节的数值对比: 无符号数: 1111 1111 值:255 1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20 有符号数: 0111 1111 值:127 1* 26 + 1* 25 + 1* 24 + 1* 23

java无符号移位(&gt;&gt;&gt;)和有符号移位(&gt;&gt;)

java中>>(<<)表示有符号的移位.<<<(>>>)表示无符号移位 如: int num = 22; 二进制是0001 0110, num>>>1,右移一位变成0000 1011(11) int num = -22 二进制用补码表示:1110 1001, num >>>1无符号右移一位: 0111 0100 >>向右移动后,最左边用符号位替补.>>>向右移动后最左边用0替补 1