| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 497 人关注过本帖
标题:两个小函数,表达什么意思?
只看楼主 加入收藏
jarload
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-2
收藏
 问题点数:0 回复次数:4 
两个小函数,表达什么意思?

1.
void xitoa(int n, char s[])
{
int i,sign;

if((sign=n)<0)
n=-n;
i=0;
do{
s[i++]=n % 10 + '0';
} while((n /= 10) > 0);
if (sign < 0)
s[i++]= '-';
s[i] = '\0';
reverse(s);
}

2.
int xatoi_intel(ibuf, start, size)
unsigned char *ibuf;
int start, size;
{
int i;
int itmp;
int val;

val = 0;
for(i=size-1; i>=0; i--) {
itmp = (int) ibuf[start + i];
itmp <<= 8 * i;
val += itmp;
}
return val;
}

搜索更多相关主题的帖子: 函数 表达 
2007-08-02 11:22
jarload
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-2
收藏
得分:0 
先顶一个
2007-08-02 11:42
mythou
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-7-26
收藏
得分:0 

怎么连main()都没有啊


2007-08-02 13:03
medicihophy
Rank: 1
等 级:新手上路
威 望:1
帖 子:102
专家分:0
注 册:2007-7-28
收藏
得分:0 
以下是引用jarload在2007-8-2 11:22:23的发言:

1.//这就是个将整型转化为二进制字符的函数,带符号的
void xitoa(int n, char s[])
{
int i,sign;

if((sign=n)<0) //表示符号,>0则为正,<0则为负
n=-n;
i=0;
do{
s[i++]=n % 10 + '0';
} while((n /= 10) > 0); //以字符形式将n的二进制码存到s中
if (sign < 0)//如果是负数则在最后加个-号
s[i++]= '-';
s[i] = '\0';
reverse(s);
}

2.这个实现将一个无符号字符型串中start开始到start+size之间的字符,以一种算法转化为32位整型数
int xatoi_intel(ibuf, start, size)
unsigned char *ibuf;
int start, size;
{
int i;
int itmp;
int val;

val = 0;
for(i=size-1; i>=0; i--) {
itmp = (int) ibuf[start + i];//这个从最后位取字符转化为整型数
itmp <<= 8 * i;//左移i*8位
val += itmp;//将结果加起来
}
return val;
}

举个例子就清除了,例如unsinged char str1[]="ABCDEFG",执行xatoi_intel(str1,0,4),则结果为
1145258561=68*2^24+67*2^16+66*2^8+65 这里68,67,66,65分别是D,C,B,A的ASII值,因为是倒着读的
我们再执行xatoi_intel(str1,0,5)发现
结果为1145258630
1145258630-1145258561=69=(int)E
结果就很明显了,因为(int)E经过了左移32(因为8*4=32,4=5-1=size-1)相当于没有移动,这里暂且这么认为
因为<<是循环位移,所以才将(int)E加在了结果上


2007-08-02 14:58
jarload
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-8-2
收藏
得分:0 
感谢medicihophy
2007-08-02 15:13
快速回复:两个小函数,表达什么意思?
数据加载中...
 
   



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

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