Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建具有给定值(0)的BCC(块检查字符)的字节数组?_C#_C++_Algorithm_Bit Manipulation_Error Detection - Fatal编程技术网

C# 如何创建具有给定值(0)的BCC(块检查字符)的字节数组?

C# 如何创建具有给定值(0)的BCC(块检查字符)的字节数组?,c#,c++,algorithm,bit-manipulation,error-detection,C#,C++,Algorithm,Bit Manipulation,Error Detection,我正在尝试创建具有特定BCC(块检查字符)结果(=0)的字节数组 该阵列的前导码为: 32 02 31 1F 31 1E 32 1F T E S T : 32 02 31 1F 31 1E 32 1F 54 45 53 54 3A 20 中间有一条可变文字信息(msg): T e s t 2 54 65 73 74 32 然后是一个邮戳: 1E 37 1F 33 03 此字符串的密件抄送为:0x11 以下是返回此值的算法(C++): 无符号字符bcc=0; int in

我正在尝试创建具有特定BCC(块检查字符)结果(=0)的字节数组

该阵列的前导码为:

32 02 31 1F 31 1E 32 1F T  E  S  T  :  
32 02 31 1F 31 1E 32 1F 54 45 53 54 3A 20
中间有一条可变文字信息(msg):

T  e  s  t  2
54 65 73 74 32
然后是一个邮戳:

1E 37 1F 33 03
此字符串的密件抄送为:0x11

以下是返回此值的算法(C++):

无符号字符bcc=0;
int index=block.Find(0x03)//ETX

对于(int i=0;i您可以通过用当前校验和替换任何单个字符的xor ed来将校验和设置为零

例如,将test2更改为test#


您可能需要注意避免使用某些特殊字符(看起来0x03在某种程度上是有意义的,如果字符串使用空终止,通常也应该避免使用0x00)。例如,如果要将一个字符转换为0x03,您可能更希望添加两个异或为0x03的字符,例如“a”和“b”

您可以通过使用当前校验和替换任何单个字符的异或ed,将校验和设置为零

例如,将test2更改为test#


您可能需要注意避免使用某些特殊字符(看起来0x03在某种程度上是有意义的,如果字符串使用空终止,通常也应该避免使用0x00)。例如,如果要将一个字符转换为0x03,您可能更希望添加两个异或为0x03的字符,例如“a”和“b”

您可以通过使用当前校验和替换任何单个字符的异或ed,将校验和设置为零

例如,将test2更改为test#


您可能需要注意避免使用某些特殊字符(看起来0x03在某种程度上是有意义的,如果字符串使用空终止,通常也应该避免使用0x00)。例如,如果要将一个字符转换为0x03,您可能更希望添加两个异或为0x03的字符,例如“a”和“b”

您可以通过使用当前校验和替换任何单个字符的异或ed,将校验和设置为零

例如,将test2更改为test#


您可能需要注意避免使用某些特殊字符(看起来0x03在某种程度上是有意义的,如果字符串使用空终止,通常也应该避免使用0x00)。例如,如果您想将一个字符转换为0x03,您可能更希望添加两个异或为0x03的字符,例如“a”和“b”

显示您为C版本所做的代码,我们可以帮助您查找错误。显示您为C版本所做的代码,我们可以帮助您查找错误。显示您为C版本和w版本所做的代码e可以帮助您找到错误。显示您为C版本所做的代码,我们可以帮助您找到错误。
unsigned char bcc=0;
int index = block.Find(0x03); //ETX
for (int i=0; i<= index;i++)
    bcc ^= block[i];
return bcc;
0x32(#) = 0x23(2)^0x11