【发布时间】:2013-09-17 09:45:31
【问题描述】:
更新
在我的应用程序中,我通过蓝牙与 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”值的函数。但我不知道使用十六进制字符串是否会更好,当转换为字节 [] 时......或何时......以及如何做到这一点。
【问题讨论】:
-
您只想检查字符串是否包含一些值。也许使用 substring() 就足够了?
-
我已经用更详细的解释更新了这个问题
-
如果我没记错的话,你会得到一个类似于 2BXXXXXX2BXXXX 的字符串,并且你希望它像 2BXXXXXX2B2BXXXX 一样改变
-
@Amith GC,就是这样!我不在乎是字符串格式还是字节 [] 格式。我需要的只是一个检查它内部的另一个“2b”的函数,如果有,复制它。
-
当您将字符串转换为字节时...您发送的是 2B(十进制的 43)还是字符“2”和“B”的值?我问它是因为如果您发送“2b02b0”并且发送的是十六进制数字,则第二个 2b 不是 43,而是 02 (2) 和 b0 (-80)
标签: java android string bluetooth