为了账号安全,请及时绑定邮箱和手机立即绑定

vb.net中来自String的CRC-16 / ARC

vb.net中来自String的CRC-16 / ARC

C#
慕仙森 2021-05-17 17:12:19
我有下面的C#代码public string CRCCalculator(string dtc){    ushort crc = 0x0000;    byte[] data = GetBytesFromHexString(dtc);    for (var pos = 0; pos < data.Length; pos++)    {        crc ^= data[pos];        for (var i = 8; i != 0; i--)        {            if ((crc & 0x0001) != 0)            {                crc >>= 1;                crc ^= 0xA001;            }            else                crc >>= 1;        }    }    return crc.ToString("X4");}但是我在vb.net中需要它,我亲自尝试过将其转换,并且过去我已经将大量的C#代码转换为vb.net,但是我还没有使用ushort和诸如此类的东西。这是转换后的VB.net代码:Public Shared Function CRCCalculator(dtc As String) As String    Dim crc As UShort = &H0    Dim data As Byte() = getBytesFromHexString(dtc)    Dim pos = 0    Do While (pos < data.Length)        crc ^= data(pos)        Dim i = 8        Do While (i <> 0)            i = (i - 1)            If (crc And &H1) <> 0 Then                crc >>= 1                crc ^= &HA001            Else                crc >>= 1            End If        Loop        pos = (pos + 1)    Loop    Return crc.ToString("X4")End Function我总是得到0,而不是取回值。
查看完整描述

1 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

我不认为“ ^”能满足您的要求。使用“ Xor”代替。

C#^运算符参考-异或运算符
VB ^运算符参考-幂/指数运算符


查看完整回答
反对 回复 2021-05-23
  • 1 回答
  • 0 关注
  • 319 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信