当前位置: 代码迷 >> C语言 >> 求救大虾!这三段代码说的是啥意思?
  详细解决方案

求救大虾!这三段代码说的是啥意思?

热度:373   发布时间:2008-06-29 19:54:23.0
求救大虾!这三段代码说的是啥意思?
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,遇到些问题,请大虾帮忙看看啦。
搜索更多相关的解决方案: 内存  ptBuffer  ptemp  

----------------解决方案--------------------------------------------------------
起什么作用这类问题都得放到大环境里面理解,字面上是看不出来的。
----------------解决方案--------------------------------------------------------
是看不出用来做什么的
----------------解决方案--------------------------------------------------------
1.申请1024字节的空间,然后在这段空间的前两个字节放下uLength
注意,uLength是16位的,也就是说要占两个字节,所以需要用两个赋值

2. 内循环(j)实现把4个字节拼成一个32位的数,然后外循环(i)取得这个32位数的值,保存到ulBufferAddr里边

3. 一个32位数右移24位,就是仅保留高8位,具体是什么作用,没上下文不好分析
----------------解决方案--------------------------------------------------------
  相关解决方案