二进制按字节求和

叁大爷 2010-09-21 01:47:05
请问要如何实现,最好提供代码
...全文
403 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
184270428 2010-09-25
  • 打赏
  • 举报
回复

PB实现:
function byte f_getcheck(string p_check);
byte b=0
long n,ll_count,v=0
ll_count = len(p_check)
if(isnull(p_check) or ll_count = 0) then return b
for n = 1 to ll_count
v += asc(mid(p_check,n,1))
v = mod(v,256)
end for
b = v
return v

end function
184270428 2010-09-25
  • 打赏
  • 举报
回复

BYTE WINAPI f_getcheck(LPCTSTR lps,LONG PACKAGELEN)
{
__try
{
BYTE check = 0,i;
BYTE *lpbyte;
lpbyte = (BYTE *)lps;
for(i = 2;i < PACKAGELEN - 1;i ++)
{
check = check + lpbyte[i];
}
return check;
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
return 0;
}
}
导出后,PB声明:
function byte f_getcheck(ref string lps,LONG PACKAGELEN) library "" for alias "f_getcheck;ansi"

叁大爷 2010-09-25
  • 打赏
  • 举报
回复
顶起来
叁大爷 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhgwbzhd 的回复:]
26位10进制数字,转换为二进制,然后 二进制按字节求和,然后再转换为十进制


有意义没??

二进制字节之和,就是十进制之和啊。

123(10)+ 456(10)=579(10)

123(10)=1111011(2)
456(10)=111001000(2)
1111011+111001000=1001000011(2)

1001000011(2)=579(10……
[/Quote]


就是要把溢出部分去掉,这个是客户要求,要跟单子上的校验码核对的
zhgwbzhd 2010-09-21
  • 打赏
  • 举报
回复
26位10进制数字,转换为二进制,然后 二进制按字节求和,然后再转换为十进制


有意义没??

二进制字节之和,就是十进制之和啊。

123(10)+ 456(10)=579(10)

123(10)=1111011(2)
456(10)=111001000(2)
1111011+111001000=1001000011(2)

1001000011(2)=579(10)
叁大爷 2010-09-21
  • 打赏
  • 举报
回复
溢出的不管
gui41021 2010-09-21
  • 打赏
  • 举报
回复
26位10进制数字

不会溢出的么
叁大爷 2010-09-21
  • 打赏
  • 举报
回复
26位10进制数字,转换为二进制,然后 二进制按字节求和,然后再转换为十进制
酒尽雪满天 2010-09-21
  • 打赏
  • 举报
回复
没看懂。。。

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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