问:iOS字符转换为gbk编码,然后转换为十六进制,然后转换为数据

时间:2016-09-21 08:02:40

标签: ios objective-c character-encoding hex

BLE开发的项目中。

我必须将十六进制数据写入peripheral, 但现在我有一个中文字符串:

NSString *originStr = @"PJ1中国";

但是演示是:

Byte b = 0X01;  // ER: 4552   PJ1我爱廖马儿:504A31CED2B0AEC1CEC2EDB6F9
NSData *data = [NSData dataWithBytes:&b length:sizeof(b)];
[self.currPeripheral writeValue:data forCharacteristic:self.characteristic type:CBCharacteristicWriteWithResponse];

现在我的问题是如何在演示中将@"PJ1中国"转换为data

1 个答案:

答案 0 :(得分:0)

感谢Larme的提示,我使用此函数获取data

NSString *dataStr = writeStr;
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingG‌​‌​B_18030_2000); NSData *myData = [dataStr dataUsingEncoding:enc]; 

我使用以下内容将信息写入development board

[self.currPeripheral writeValue:data forCharacteristic:self.characteristic type:CBCharacteristicPropertyWrite]; 

请注意:type不是问题的演示:CBCharacteristicWriteWithResponse,但类型为:CBCharacteristicPropertyWrite。 或者它会导致错误:

Error Domain=CBATTErrorDomain Code=3 "Writing is not permitted." UserInfo={NSLocalizedDescription=Writing is not permitted.}。我也再次感谢Larme的暗示。