Java 当我想写出无符号的短值时获取有符号的短值
使用这里提供的解决方案,我将一个二维数组写到磁盘,它由未签名的短数组组成。当我通过读取来检查此文件的值时,仍然可以看到有符号的值,即负值。代码中的错误是什么Java 当我想写出无符号的短值时获取有符号的短值,java,unsigned,short,Java,Unsigned,Short,使用这里提供的解决方案,我将一个二维数组写到磁盘,它由未签名的短数组组成。当我通过读取来检查此文件的值时,仍然可以看到有符号的值,即负值。代码中的错误是什么 fos = new FileOutputStream(destFile); short[][] data = getData(); //defined in another class if (ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN) { for (int i = 0;
fos = new FileOutputStream(destFile);
short[][] data = getData(); //defined in another class
if (ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN)
{
for (int i = 0;i<1200;i++)
{
for (int j = 0; j <1200;j++)
{
fos.write((data[i][j] >> 8) & 0xFF);
fos.write(data[i][j] & 0xFF);
}
}
}
else
{
for (int i = 0;i<1200;i++)
{
for (int j = 0; j <1200;j++)
{
fos.write(data[i][j] & 0xFF);
fos.write((data[i][j] >> 8) & 0xFF);
}
}
}
fos=新文件输出流(destFile);
short[][]data=getData()//在另一个类中定义
if(ByteOrder.nativeOrder().equals(ByteOrder.BIG_ENDIAN)
{
对于(inti=0;i8)&0xFF);
fos.写入(数据[i][j]&0xFF);
}
}
}
其他的
{
对于(inti=0;i8)&0xFF);
}
}
}
Java没有无符号的短数据类型,但别担心,代码工作正常。有符号和无符号的位模式是相同的,区别在于如何解释第一位。如果要将无符号值用作短路,可以使用AND运算符:
int unsignedValue = signedShortValue & 0xFFFF;
Java创建的文件将由C程序读取,该程序要求您指定输出数据的符号。在C程序的输入文件中,我是说“unsigned”吗?是的,在C中可以使用
unsigned
。