Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的反向无符号到有符号转换 使用C++,INT从“签名”转换为“未签名”。_Java_C++ - Fatal编程技术网

Java中的反向无符号到有符号转换 使用C++,INT从“签名”转换为“未签名”。

Java中的反向无符号到有符号转换 使用C++,INT从“签名”转换为“未签名”。,java,c++,Java,C++,我可以使用Java将这个“unsigned”int转换回“signed”int吗 符号值(-3)使用C++ +转换为无符号(65533) 如何使用Java将无符号(65533)值转换回有符号(-3) 提前谢谢 Prav如果我正确理解了这个问题,你有一些价值,比如 int value = 65533; 您希望将其视为有符号16位整数,对于该整数,解决方案非常非常简单: short signed = (short) value; // -3 您可以使用以下选项: if (a > 32767

我可以使用Java将这个“unsigned”int转换回“signed”int吗

符号值(-3)使用C++ +转换为无符号(65533) 如何使用Java将无符号(65533)值转换回有符号(-3)

提前谢谢


Prav

如果我正确理解了这个问题,你有一些价值,比如

int value = 65533;
您希望将其视为有符号16位整数,对于该整数,解决方案非常非常简单:

short signed = (short) value; // -3

您可以使用以下选项:

if (a > 32767) a -= 65536;

<> C++中的int通常是32位,但是,你的65533是-3,所以你的int有16位。大多数人会认为16位int为短(int)

Java中的int/Integer总是32位

当您想要将有符号短整数:-3转换为无符号短整数时,您只得到65533。这是关于位a nop的

在Java中,只需执行

 int i = 65533; // or other values from unsigned short int

 if (i >= (1<<15) {
    i -= 1 << 16;
 }
inti=65533;//或来自无符号短整型的其他值

如果(i>=(1)p>您使用C++来解释有符号整数,并将其表示为无符号的2字节整数。< /P> 回退方式仅在表示为2字节整数的假设下有效,通过回退符号扩展位(注意,这是未测试的),以下操作应有效:

int number = 65533;

// check sign bit for 2-byte integer, add in sign bits for 4 byte integer if set 
int signedNumber = (0 == (number & 0x8000)) ? number : (number | 0xFFFF0000);

你想用它来实现什么?65533在JAVA中是一个可接受的有符号int值。我需要返回实际的有符号值。在我的接口中,我使用JAVA语言。@praveen:65533是一个有符号值…你是说如何在x86上以相同的16位二进制表示获得相应的负值?顺便说一句,问题很可能是做你的C++程序或者你和它的接口。你应该修复原因,而不是症状。<代码> 0x7FFF 和 0x10000()看起来有点不太随机。嗯,是的。这是我在java中唯一能想到的无符号值的来源,因为所有的原始类型都是署名的。我想你误解了这个问题。他有一个E。XTyAL C++程序,为他打破16位值。现在他想重新解释一个16位无符号整数作为符号整数(当然,这两个都用java表示为<代码> int <代码> s)。他是如何将16位无符号整数作为有符号整数的?路易斯。我如何才能将32位有符号整数取回?@praveen:您不能将32位负值的无符号表示形式存储在Java
int
中,因此这个问题没有太多意义。答案仍然是一样的:修复C/Java桥中的类型不匹配.