请问这段代码什么意思,急!

weigogo 2003-10-18 02:56:40
ProcessByte(unsigned char *key,BOOL shift){

unsigned char tmp;
DWORDLONG byte=0;
int i=0;

while(i<8){
while(*key){
if(byte!=0)
byte<<=8;
tmp=*key;
if(shift)
tmp<<=1;
byte|=tmp;
i++;
key++;
}
if(i<8)
byte<<=8;
i++;
}
return byte;
}
...全文
61 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cb615cb 2003-10-18
  • 打赏
  • 举报
回复
(1):shift为真
ProcessByte(unsigned char *key,BOOL shift){

unsigned char tmp;
DWORDLONG byte=0;
int i=0;

while(i<8){
while(*key){
if(byte!=0)
byte<<=8;
tmp=*key;
tmp<<=1;
byte|=tmp;
i++;
key++;
}
if(i<8)
byte<<=8;
i++;
}
return byte;
}
tmp左移一位,7位ASCII码8位表示高7位有效,不知道什么作用。
(2):shift为假
ProcessByte(unsigned char *key,BOOL shift){

unsigned char tmp;
DWORDLONG byte=0;
int i=0;

while(i<8){
while(*key){
if(byte!=0)
byte<<=8;
tmp=*key;
byte|=tmp;
i++;
key++;
}
if(i<8)
byte<<=8;
i++;
}
return byte;
}
将输入字符序列转化为DWORDLONG类型,字符1代表31,所以得到楼上的结果。
最后一段:
if(i<8) byte<<=8;
不到8个有效字符则低8位为0,即NULL,对字符代表结束符,对DWORDLONG类型没有用。
weigogo 2003-10-18
  • 打赏
  • 举报
回复
谢拉
daizh 2003-10-18
  • 打赏
  • 举报
回复
将输入的unsigned char *key的内容以8个字节为单位,依次将它们转换为一个DWORDLONG类型的值。
如:ProcessByte("12345678",0)的值为0X3132333435363738.
daizh 2003-10-18
  • 打赏
  • 举报
回复
无符号双字长整型,对于32位系统,是8个字节。DWORD是32位无符号整型。
weigogo 2003-10-18
  • 打赏
  • 举报
回复
DWORDLONG 是什么类型?
我太菜了,不完全了解
麻烦说的详细点

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧