关于读Shp文件的一个函数

PageLee 2006-01-26 08:53:39
看到一个SHP文件的类里有这样一个函数:

static void SwapWord( int length, void * wordP )

{
int i;
uchar temp;

for( i=0; i < length/2; i++ )
{
temp = ((uchar *) wordP)[i];
((uchar *)wordP)[i] = ((uchar *) wordP)[length-i-1];
((uchar *) wordP)[length-i-1] = temp;
}
}


从shp文件读入的数据是170328064,也就是iTemp = 170328064;
经过 SwapWord(sizeof(int),&iTemp);后
iTemp就变为9994请问这起到一个什么样的作用。


在文件头有这样一句
/* Establish the byte order on this machine.
请问大师什么意思
...全文
445 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐鹦鹉 2006-01-26
  • 打赏
  • 举报
回复
这个很简单了。就是说,在SHP文件中,数据字节的排列顺序与机器中是方向的。比如机器中是0x0d0a,那么在SHP中记录成0x0a0d,所以,读取SHP文件,必须将相应数据的字节顺序交换后,才能正确取得数据。就是这样。
==不是方向,是反向,说错了。
这个很简单了。就是说,在SHP文件中,数据字节的排列顺序与机器中是反向的。比如机器中是0x0d0a,那么在SHP中记录成0x0a0d,所以,读取SHP文件,必须将相应数据的字节顺序交换后,才能正确取得数据。就是这样
快乐鹦鹉 2006-01-26
  • 打赏
  • 举报
回复
170328064的16进制为0x0a27,交换字节顺序后就是0x270a,十进制就是9994了。
快乐鹦鹉 2006-01-26
  • 打赏
  • 举报
回复
这个很简单了。就是说,在SHP文件中,数据字节的排列顺序与机器中是方向的。比如机器中是0x0d0a,那么在SHP中记录成0x0a0d,所以,读取SHP文件,必须将相应数据的字节顺序交换后,才能正确取得数据。就是这样。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧