求C++大神和VB大神帮我把转换下代码:c++ to vb

yj258213056 2011-11-24 01:18:21
在C++板块发了个帖子结果没人回复,http://topic.csdn.net/u/20111124/11/61306a2b-e58e-4194-ad3f-0ab5f0ff4c33.html?seed=522843354&r=76639017#r_76639017
只好发到这边来了,


/*-------------------------------------------*/
// Summary:判断校验位是否正确
// Parameter:
// (char*)buf -> 报文段(在0ah与0dh之间的片段)
// Return: SUM_OK(0): The sum check is succeed.
// SUM_ERR(1):The sum check is fail.
/*-------------------------------------------*/
int CSocketManager::SumCheck(unsigned char *buf)
{
unsigned char sum = 0;
unsigned char rx_sum;
int i;
int len = strlen((char*)buf);

rx_sum = ((buf[len-2] << 4) & 0xf0) + (buf[len-1] & 0x0f);
for( i = 0 ; i < len-2 ; i++)
{
sum += buf[i];
}
if(sum != rx_sum) return SUM_ERR;

return SUM_OK;
}
...全文
129 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
yj258213056 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 supermanking 的回复:]

引用 16 楼 yj258213056 的回复:

OK OK OK ,
我确实很菜,这我不否认,但是我想问问?难道你们这些大牛是天生就很牛的么?
你们大牛都没经历过菜鸟时代?一步登天的?
OK.那我确实无话可说,,,,
不过您们这些大牛来回答我的弱智问题,
确实让我沾染到了一些不一样的气息,
也让我的帖子蓬荜生辉,我表示感谢!

不是别人没经历过什么都不会的时期,而是态度问……
[/Quote]
你说的对,谢谢你的帮助,
yj258213056 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 supermanking 的回复:]

C 语言里的 << 和 >> 是二进制位移的运算符号
VB 或者说 Basic 语言是没有这种二进制位移的运算符的
但如果要实现这样的操作也可以用数学的办法去实现
比如:

x = 2 << 1; // 在 C 语言里是 1 这个数字的二进制位向左偏移1个二进制位,并用0填充新的值
如:
2 = 00000010
像左向左偏移1个二进制位并用0填充新的值就是这样
00……
[/Quote]
这个我知道,((buf(ilen - 2) / 16)
现在还是人类 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 yj258213056 的回复:]

OK OK OK ,
我确实很菜,这我不否认,但是我想问问?难道你们这些大牛是天生就很牛的么?
你们大牛都没经历过菜鸟时代?一步登天的?
OK.那我确实无话可说,,,,
不过您们这些大牛来回答我的弱智问题,
确实让我沾染到了一些不一样的气息,
也让我的帖子蓬荜生辉,我表示感谢!
[/Quote]
不是别人没经历过什么都不会的时期,而是态度问题。
你的问题和基础有关,全是基础语句,基础运算符,基础概念。
这种问题很多人都会选择自己看帮助文件解决,不会动不动就叫别人帮自己做。
像这种能在帮助文件就能找到答案的问题没几个会这么处理的。
现在还是人类 2011-11-24
  • 打赏
  • 举报
回复
C 语言里的 << 和 >> 是二进制位移的运算符号
VB 或者说 Basic 语言是没有这种二进制位移的运算符的
但如果要实现这样的操作也可以用数学的办法去实现
比如:

x = 2 << 1; // 在 C 语言里是 1 这个数字的二进制位向左偏移1个二进制位,并用0填充新的值
如:
2 = 00000010
像左向左偏移1个二进制位并用0填充新的值就是这样
000000100
00000100 = 4
在多看几个数
7 << 1
7 = 00000111
00001110 = 14

发现没有,2*2=4,这个4就是二进制位移1位的结果,而7*2=14,这个14就是7二进制位移1位的结果
根据这个理论来看看
7<<2 该怎么计算?
7*(2^2) 就是 7 乘以 2的2次方
00011100 = 28

7<<3
7*(2^3)
00111000 = 56

yj258213056 2011-11-24
  • 打赏
  • 举报
回复
OK OK OK ,
我确实很菜,这我不否认,但是我想问问?难道你们这些大牛是天生就很牛的么?
你们大牛都没经历过菜鸟时代?一步登天的?
OK.那我确实无话可说,,,,
不过您们这些大牛来回答我的弱智问题,
确实让我沾染到了一些不一样的气息,
也让我的帖子蓬荜生辉,我表示感谢!
yj258213056 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 supermanking 的回复:]

引用 5 楼 focus 的回复:

很明显的他没理解程序的意思,如果写个程序连意思都不明白你认为这正常吗?
我就不相信他连定义变量和变量类型都搞不清楚,连基本的if语句和For语句都
不会,连基本的运算符都看不懂。那么为什么这个程序他不写写看呢?
真的是因为完全不懂吗?如果真的是完全不懂,这样写给他有什么意义?证明
你是为了他那 100分 CSDN 虚拟分数的廉价劳动力?....
[/Quote]

这位大哥,其实C#的我回转,只是不懂C++的语法,既然您这么牛,能帮我解释下不?
现在还是人类 2011-11-24
  • 打赏
  • 举报
回复
在 C 语言里,& 运算符号是“与”运算符,在 VB 里,“与”运算符是 And,
运算符中最基础的几个就是 非、与、或
VC 里就是用 !、&、| 表示 非、与、或 运算符,而 VB 则是 Not、And、Or 表示 非、与、或
现在还是人类 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 focus 的回复:]

int CSocketManager.SumCheck(string buf)
{
unsigned char sum = 0;
unsigned char rx_sum;
int i;
int len = buf.Length;

rx_sum = ((buf[len-2] << 4) & 0xf0) + (buf[l……
[/Quote]
很明显的他没理解程序的意思,如果写个程序连意思都不明白你认为这正常吗?
我就不相信他连定义变量和变量类型都搞不清楚,连基本的if语句和For语句都
不会,连基本的运算符都看不懂。那么为什么这个程序他不写写看呢?
真的是因为完全不懂吗?如果真的是完全不懂,这样写给他有什么意义?证明
你是为了他那 100分 CSDN 虚拟分数的廉价劳动力?
yj258213056 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 focus 的回复:]

& = and
| = or
自己看着办吧.
...
[/Quote]
我是说vb里面
yj258213056 2011-11-24
  • 打赏
  • 举报
回复
Function SumCheck(ByRef buf() As Byte) As Boolean
Dim sum As Byte
sum = 0
Dim rx_sum As Byte
Dim i As Integer
Dim ilen As Integer
ilen = Len(CByte(buf))

rx_sum = ((buf(ilen - 2) / 16) & &HF0) + (buf(ilen - 1) & &HF)
For i = 0 To ilen - 2 - 1
sum = sum & buf(i)
Next i
If sum <> rx_sum Then
SumCheck = False
End If

SumCheck = True
End Function


红色部分怎么转?
yj258213056 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 supermanking 的回复:]

全是基本的句法问题,你先自己翻译一下,不懂的留出来,再问问别人什么意思。
[/Quote]

vb里面&这个怎么写?
现在还是人类 2011-11-24
  • 打赏
  • 举报
回复
全是基本的句法问题,你先自己翻译一下,不懂的留出来,再问问别人什么意思。
yj258213056 2011-11-24
  • 打赏
  • 举报
回复
人气还不如C++那边啊,,
yj258213056 2011-11-24
  • 打赏
  • 举报
回复
有人么?难道跟C++那边一样?>
yj258213056 2011-11-24
  • 打赏
  • 举报
回复
sos,sos...

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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