【问题标题】:Convert NSString key to 2 bytes array将 NSString 键转换为 2 字节数组
【发布时间】:2015-02-19 12:57:28
【问题描述】:

对于一个项目,我需要通过蓝牙将密钥发送到 BLE 设备。

我从我的网络服务接收密钥作为 NSString。例如 1234

现在我需要发送到设备的是

Byte byteArray[] = {0x12, 0x34};

有没有人可以给我一些示例代码来说明如何做到这一点?

谢谢

【问题讨论】:

    标签: ios xcode nsstring byte


    【解决方案1】:

    要将字符串作为字节发送,您应该使用以下代码:

    NSString *yourString = @"1234";
    NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding];
    NSUInteger len = [data length];
    Byte *byteData = (Byte*)malloc(len);
    memcpy(byteData, [data bytes], len);
    

    0x12 的十六进制等于十进制的18

    有用的链接:

    【讨论】:

    • 好的,谢谢。你说得对,0x12 是十进制的 18,但实际上 0x12 将键的第一个数字 (1) 放在首位,然后是第二个 (2)。事实上,这并不是真正的转换。例如:密钥 7823 将是 0x78 0x23。
    【解决方案2】:

    我终于设法使用组合 webservice - xcode 做到了这一点 我没有将整个密钥作为一个字符串发送,而是将其拆分并将前 2 位数字转换为 PHP 中的十六进制(在 Web 服务上)。

    使用此代码,我创建了正确的字节数组来发送代码:

    NSString *key1 = [message objectForKey:@"key1"];
    NSString *key2 = [message objectForKey:@"key2"];
    unsigned char byteArray[2];
    byteArray[0] = [key1 intValue];
    byteArray[1] = [key2 intValue];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多