针对modular char和modular short 在libopencad类库中的理解

首先主要是在以下函数中与此有关

long ReadUMCHAR(const char * pabyInput, size_t& nBitOffsetFromStart)

long ReadMCHAR(const char * pabyInput, size_t& nBitOffsetFromStart)

unsigned int ReadMSHORT(const char * pabyInput, size_t& nBitOffsetFromStart)

接着就是在这些函数中最难理解的部分为:

SwapEndiannessA,B:这个函数功能是实现翻转,一般A为一个数组,B为数组里面元素个数,现在举个例子:A[0]=0,A[1]=1,A[2]=2,A[3]=3,经过SwapEndiannessA,4之后,数组A里面变为:A[0]=3,A[1]=2,A[2]=1,A[3]=0

MemcpyA,B,C):这个函数大致有两种用法:1.A,B都是数组,C为个数,即将B里面的C个字节复制给A。2.A为一个取地址值(long t,  &t),B为一个数组,C为个数,然后将B中数据复制给A,对于A而言,假设A[0]=83,A[1]=82,A[2]=0,那么这些数据复制过后由于是long,所以会对数据进行整合,其结果为82*256+83=21075。

最后结论:

对于modular char和modular short可能并不像OAD的dwg开放文档中所言是压缩算法,因为压缩意味着用更少的字节去存储更多或更大的数值,而在实际调用中发现,这个更像一个壳,避免外部能直接获取有效的信息,需要通过它自己的算法才能得到有效信息。

猜你喜欢

转载自blog.csdn.net/Caoyang_He/article/details/80349377
今日推荐