标题:天啊,这是什么算法啊!!
只看楼主
daweilich
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-28
 问题点数:0 回复次数:6 
天啊,这是什么算法啊!!
哪位大侠能帮小弟解释下下面的算法,最好能逐行解释下
size_t get_nl(char *sfrom)
{
unsigned char *from = (unsigned char *)sfrom;
size_t t;
t = (*from++) << 24;
t |= (*from++) << 16;
t |= (*from++) << 8;
t |= *from;
return t;
}
并且希望能告诉我| =是什么作用,先谢了!!
搜索更多相关主题的帖子: 算法 char get sfrom unsigned 
2007-05-28 10:00
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:353
专家分:222
注 册:2006-4-11
得分:0 
就是位移+或操作么....不是算法

2007-05-28 10:19
daweilich
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-28
得分:0 
回复:(hao0716)就是位移+或操作么....不是算法
是的,我也知道是或运算
不过我想问的是这是想实现什么功能
还有就是t = (*from++) << 24是什么意思,应该是左移24位吧
但是为什么要++呢,还有就是左移完有什么作用吗
2007-05-28 10:31
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 

unsigned char *from = (unsigned char *)sfrom;/*强制类型转换*/
size_t t;/*如果没猜错的话,size_t应该是自定义类型,typedef char size_t;*/

/* (*from++)相当于先把from[0]<<24(向左移24位,由于from[0]是8位,
所以向左移24后from[0]的值为0,再赋给t(t=0)),再使from指向from[1] */
t = (*from++) << 24

/* t|=var;相当于t=t|var; */

/*(*from++)相当于先把from[1]<<16(向左移16位,由于from[1]是8位,
所以向左移16后from[1]的值为0,将t|=0相当于t=t|0;
由上一语句可知t=0,再使from指向from[2] */
t |= (*from++) << 16;

/*(*from++)相当于先把from[2]<<8(向左移8位,由于from[2]是8位,
所以向左移8后from[2]的值为0,将t|=0相当于t=t|0;
由上一语句可知t=0,再使from指向from[3] */
t |= (*from++) << 8;

/*t|=*form;相当于t=t|from[3]; 由上一语句可知t=0,所以结果t的值为from[3]*/
t |= *from;

return t;
/*t的值为from[3]*/


我测试了一下:
#include<stdio.h>
#include<conio.h>
main()
{
char *str="zhaoxufeng";
char t;
clrscr();
t=(*str++)<<24;
t|=(*str++)<<16;
t|=(*str++)<<8;
t|=*str;
printf("%c",t);

getch();
}
结果:
o


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-05-28 10:57
daweilich
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-28
得分:0 
很感谢 ,你真是太有才了
2007-05-28 11:42
daweilich
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-5-28
得分:0 
不过还要问一下,这段代码的目的是做什么用的
2007-05-29 09:15
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
得分:0 

看不出来,这个程序为什么要这样做.


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-05-29 18:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-142903-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017175 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved