Java中的反向无符号到有符号转换
Reverse unsigned to signed conversion in Java
使用C++,int从"签名的";至";无符号";。
我能把这个";无符号的";int返回到";签名的";使用Java。
使用C++将有符号值(-3)转换为无符号值(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位。
当你想把带符号的短int:-3转换成无符号的短整型时,你只得到65533。这是关于比特的。
在Java中只需执行
int i = 65533; // or other values from unsigned short int
if (i >= (1<<15) {
i -= 1 << 16;
}
您使用C++来解释有符号整数,并将其表示为无符号2字节整数。
返回方式仅在假设表示为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);
相关文章:
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 获取隐式转换溢出从无符号到已签名的警告
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- C ++中无符号位长度类型之间的隐式转换,即uint8_t,uint16_t
- 错误:隐式转换更改符号:'int'到'unsigned long'
- 如何将 UTF-8 文本从文件转换为某个可以迭代的容器,并检查每个符号是否为C++字母数字?
- 将浮点数转换为无符号字符数组并打印出来
- 将无符号转换为复杂<int>原因符号转换警告
- 自动符号转换,用于对类等数学向量进行操作
- 矢量浮点到整数/符号转换
- C++编译器或预处理器是否可以将符号转换为大写
- 在 AND 和比较时进行符号转换
- 多字节到宽字符将 (°) 度数符号转换为
- Java中的反向无符号到有符号转换
- 我能把字符符号转换成字符串吗