Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 当我想写出无符号的短值时获取有符号的短值_Java_Unsigned_Short - Fatal编程技术网

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