我将十六进制characteristic.value
(NSinline)转换为十进制。
这段数据如下:<d1448fe0 a1b1c827 efecdf87 a05b1907 5e4e62ec>
,即20个字节。我想将每个字节存储在一个大小为20的数组中。我很好奇是否有更有效的方法来一次解析这个字节。我下面粘贴的当前代码正在工作,但考虑到我的采样率约为250 Hz,它的速度很慢。
我将十六进制值放入一个字符串然后放入一个字符数组中,然后解析循环遍历整个事物。
有什么想法吗?提前致谢
int xval[20];
NSString *val = @"";
val = [val stringByAppendingFormat: @"%@",characteristic.value];
const char *c = [val UTF8String];
int number = [temp intValue];
int counter_filler = 0;
NSString *toFill = @"";
int xval_counter = 0;
unsigned binar;
for (int i = 0; i < strlen(c);i++)
{
if (c[i] != '<' && c[i] != '>' && c[i] != ' ')
{
if (counter_filler == 2)
{
counter_filler = 0;
toFill = @"";
}
// make it a string
toFill = [toFill stringByAppendingFormat: @"%c",c[i]];
if (counter_filler == 1)
{
NSScanner *scanner = [NSScanner scannerWithString:toFill];
[scanner scanHexInt:&binar];
xval[xval_counter] = binar;
xval_counter++;
}
counter_filler++;
}
}
答案 0 :(得分:1)
如果^
实际上是characteristic.value
个对象,您可以用以下代码替换所有代码:
NSData
就是这样。这将把uint8_t xval[20];
[characteristic.value getBytes:xval length:sizeof(xval)];
中的20个字节放入characteristic.value
字节数组。
xval
是一个无符号整数类型,它包含一个8位字节。
顺便说一句 - 从不依赖于对象的uint8_t
方法的输出。对对象使用description
和stringWithFormat:
格式说明符时,会导致调用对象的%@
方法以获取字符串表示形式。 description
方法的输出未记录,可能会随时间而变化。始终使用类的适当方法来获取其值。