更新
在我的应用程序中,我通过蓝牙与 PCB 进行持续通信。这种通信是由 HEX 字符串进行的。
字符串格式是这样的:
2b(thread init), 05(write command), 09(bytes), 04(variable bytes), 5af2ff1f(memory location), 04a0bcf1(variable value), 7e(checksum)
这个Hex字符串的作用是访问PCB的一个具体内存位置并写入一个值。
为了更容易,让我们假设十六进制字符串是:
hex_string= 2B05A82BF1
这个字符串,在通过蓝牙发送之前,我将它转换为一个字节[]。我需要创建一个函数来检查我发送的所有字符串。
我必须寻找的是字符串中的任何“2B”字节。这是因为 PCB 将“2b”读取为“init thread”值,如果字符串中有任何“2b”,PCB 会将其读取为另一个线程的 init,并且不会完全发送字符串。
我不知道是否更容易使用十六进制字符串或将其转换为字节 [] 之后进行检查。
该函数将丢弃字符串的第一个“2b”并检查字符串内是否还有另一个“2b”,如果是,则复制它,从而产生此结果。
before: hex_string= 2B05A82BF1
after: hex_string= 2B05A82B2BF1
这样,PCB 就知道“2b”不是初始化线程值。
我想要做的是检查所有字符串中是否包含“2b”值的函数。但我不知道用十六进制字符串执行此操作是否更好,何时转换为 byte[]... 或何时... 以及如何执行此操作。