在C语言中也有一个类似的问题被问到和回答,但我在C#中遇到了一些困难。
我有48位数据,现在我需要生成16位CRC,下面是代码:
private bool[] MakeCRC(string BitString)
{
bool[] Res = new bool[17];
bool[] CRC = new bool[16];
int i;
bool DoInvert= false;
for (i = 0; i < 16; ++i) // Init before calculation
CRC[i] = false;
for (i = 0; i < BitString.Length; ++i)
{
if (BitString[i] == '1')
DoInvert = true ^ CRC[15];
//DoInvert = ('1' == BitString[i]) ^ CRC[15]; // XOR required?
CRC[15] = CRC[14];
CRC[14] = CRC[13];
CRC[13] = CRC[12];
CRC[12] = CRC[11];
CRC[11] = CRC[10];
CRC[10] = CRC[9] ^ DoInvert;
CRC[9] = CRC[8];
CRC[8] = CRC[7] ^ DoInvert;
CRC[7] = CRC[6] ^ DoInvert;
CRC[6] = CRC[5];
CRC[5] = CRC[4];
CRC[4] = CRC[3];
CRC[3] = CRC[2] ^ DoInvert;
CRC[2] = CRC[1];
CRC[1] = CRC[0];
CRC[0] = DoInvert;
}
for (i = 0; i < 16; ++i)
Res[15 - i] = CRC[i] ? true : false;
Res[16] = false; // Set string terminator
return (Res);
}
但是上面的代码,给了我错误的输出,请建议我如果有什么更好的方法做它。
编辑:
取消注释DoInvert=('1'==bitstring[i])^CRC[15];去掉上面的线,它就工作了。
您对注释行的替换是错误的。正确的做法是:
if (BitString[i] == '1')
DoInvert = true ^ CRC[15];
else
DoInvert = false ^ CRC[15];
本文向大家介绍基于C++中setiosflags()的用法详解,包括了基于C++中setiosflags()的用法详解的使用技巧和注意事项,需要的朋友参考一下 cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2); setiosflags 是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是执
本文向大家介绍tan()函数,用于C ++中的复数,包括了tan()函数,用于C ++中的复数的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论C ++ STL中复数的工作原理,语法和函数示例。 tan()用于复数是<complex>头文件下的函数。此函数用于查找与其关联的复数的切线。此功能是<cmath>头文件下的simple的复杂版本。 什么是复数? 复数是由实数和虚数组成的数字。
我试图使用C# DI方法来实现一些东西。以下是我的代码片段。 以及创建ServiceLocator的代码: 现在,我用创建一个测试代码 但看起来,我总是得到函数返回的。相反,我希望通过函数获取object,那么如何正确地实现呢?
问题内容: 我想将Java中的类转换为C#,大部分更改已经完成,但是我不确定这部分。我想转换以下代码行: 我已经试过了: 但是它不能正常工作,因为GetBytes()期望翻倍。我不确定将其转换为双精度是否可以解决问题,所以我想在这里询问。 问题答案: 根据您的编码,您可以执行以下操作: 有关参考,请参见http://msdn.microsoft.com/zh- cn/library/ds4kkd5
null
有没有办法使用MinGW作为MS Visual C++的替代品?很多Python包都需要VS C++才能安装:4.5GB的磁盘空间!MinGW只需要450 MB,就可以达到编译C/C++的目的。 我使用的是Visual Studio代码,我尽量避免在3)-->中建议的Microsoft Visual C++安装,您也可以只安装C++构建工具:https://Code.visualstudio.co