gpt4 book ai didi

c# - 计算 char 的按位反转

转载 作者:太空狗 更新时间:2023-10-30 01:31:23 28 4
gpt4 key购买 nike

我正在尝试对使用 hdlc 作为数据包格式的串行端口设备进行逆向工程。根据文档,数据包应包含命令的按位反转(前 4 个字节),在本例中为 “你好”。使用原始程序时监控串口显示按位反转应该是什么:

 HELO -> b7 ba b3 b0
READ -> ad ba be bb

问题是,我什至无法获得非常接近的值。

public object checksum
{

get
{
var cmdDec = (int)Char.GetNumericValue((char)this.cmd);
return (cmdDec ^ 0xffffffff);
}
}

最佳答案

您必须使用字节,而不是字符:

string source = "HELO";

// Encoding.ASCII: I assume that the command line has ASCII encoded commands only
byte[] result = Encoding.ASCII
.GetBytes(source)
.Select(b => unchecked((byte)~b)) // unchecked: ~b returns int; can exceed byte.MaxValue
.ToArray();

测试(让我们将结果表示为十六进制)

// b7 ba b3 b0
Console.Write(string.Join(" ", result.Select(b => b.ToString("x2"))));

关于c# - 计算 char 的按位反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41543541/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com