gpt4 book ai didi

ios - int转十六进制最后做NSData

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:22:03 36 4
gpt4 key购买 nike

我在寻找写入蓝牙设备特性的正确方法时遇到了问题。这个有一个 3 字节的密码,在写完所有特征后,我必须将这个密码写入它的最后一个字段(名为 FFFF),以便保存。

密码是十六进制的 0000150x00000f,我正在使用此代码:

if([characteristic.UUID isEqual: [CBUUID UUIDWithString: @"FFFF"]]) {
bt = 15;
NSString *hex = [NSString stringWithFormat:@"0x%06x", (unsigned int) bt];
NSLog(@"Hex value: %@", hex);
[peripheral writeValue:[NSData dataWithBytes:&hex length:3]forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
}

问题是,虽然从 int 到 hex 的转换似乎正确完成,但当尝试将其写为 NSData 时,我收到一条错误消息,提示 "Encryption is insufficient"。制造商说这意味着“密码错误”(他们没有任何关于如何编写密码的 iOS 示例代码)。

最佳答案

使用字节缓冲区更简单,如下所示。这假定密码是小端(最低有效字节在前)。如果它期待大端,你只需要反转字节顺序。

if([characteristic.UUID isEqual: [CBUUID UUIDWithString: @"FFFF"]]) {
Byte byteArray[] = { 0x0F, 0x00, 0x00 };
[peripheral writeValue:[[NSData alloc] initWithBytes: byteArray length: 3]forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
}

问题中的代码不起作用,因为它会将十六进制字符串转换为字节,这根本不是您想要的。对于字符串“0x00000F”中的八个字符,您最终得到一个字节。您需要三个字节。

关于ios - int转十六进制最后做NSData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23361347/

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