- 积分
- 2274
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-7-10
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2011-11-30 00:34:23
|
显示全部楼层
本帖最后由 godenflame135 于 2011-11-30 00:37 编辑
问题终于成功解决。(感谢论坛坛主--清风及各位的关注)
问题原因:C语言无符号整形数据可以用fortran读出来,小于零的只要加上65536即可,大于零的就是本身。但是,如果在自定义结构体中含有无符号整形则不太可能再用fortran去读写(如果编程者知道fortran中type字节对齐的话,也有可能用fortran的type去读写),则只能用C语言去读写。
这里要用到一个C语言中自定义结构体非常重要的一个预编译命令(以64位机子为例):
#pragma pack(1)//使结构体按照一个字节一个字节的对齐。
struct a
{
char a;//1 byte //no aligment ,it may cost 2 bytes(depend on arch and compiler)
int b; //4 bytes
long int c; //8 bytes
float d; //4 bytes
}; // sizeof(a)=17 bytes
//如果不加第一句话:则有可能是18个字节。这样就不能按照字节数去读取写好的文件。
只有这样,才能按照结构体一个字节一个字节的去读取。
|
|