求救大虾!这三段代码说的是啥意思?
ptBuffer=(UINT8*)malloc(1024) ptemp=ptBuffer
*(ptemp+0)=(UINT8)((uLength)&off);
*(ptemp+1)=(UINT8)(((uLength)>>8)&off);
给ptBuffer分配1K的内存,ptemp指向ptBuffer。
后面两段分别在ptBuffer的两个地址存放东西,我不明白做什么用的。好像是调整字节序,但不明白如何实现。
==================================================
for(i=0;i<uLTempLength/4);i++)
{
for(j=0;j<4;j++)
{
*(ptempvalue+3-j)=*(ptemp+i*4+j);
}
*(((UINT32*)ulBufferAddr)+i)=((UINT*)ptempvalue);
}
ulBufferAddr=ulBufferAddr+uLTempLength;
PS:ptempvalue分配了4字节的内存空间,
这一段主要不明白这两个循环在做什么。感觉是把一段内存的东西搬移到另外一个内存。
=========================================
if(xwAllength%4==1)
{
xwvalue=(UINT32)(*((UINT*32)(ptemp+uLTempLength)));
xwvalue=(UINT32)(xwvalue>>24);
}
这个右移起什么什么用?
以前学硬件的,最近开始学C,遇到些问题,请大虾帮忙看看啦。
----------------解决方案--------------------------------------------------------
起什么作用这类问题都得放到大环境里面理解,字面上是看不出来的。
----------------解决方案--------------------------------------------------------
是看不出用来做什么的
----------------解决方案--------------------------------------------------------
1.申请1024字节的空间,然后在这段空间的前两个字节放下uLength
注意,uLength是16位的,也就是说要占两个字节,所以需要用两个赋值
2. 内循环(j)实现把4个字节拼成一个32位的数,然后外循环(i)取得这个32位数的值,保存到ulBufferAddr里边
3. 一个32位数右移24位,就是仅保留高8位,具体是什么作用,没上下文不好分析
----------------解决方案--------------------------------------------------------