BLE
のプロジェクトでは、Q:iOS文字がgbkエンコーディングに変換され、16進数に変換されてからデータに変換されます。
私は、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
'CFStringEncodings'(私は' kCFStringEncodingGBK_95'でしょうか?)をチェックし、 'originStr'を' dataUsingEncoding: 'で' NSData'に直接変換します。 'Byte'を使う必要はありません。 – Larme
@Larme beforあなたの答え私は 'NSString * dataStr = writeStr;を使用します。 NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSData * myData = [dataStr dataUsingEncoding:enc]; '私はこれをコンサートに使用し、データは「」ですが、私は' self.currPeripheral writeValue: 'を使用します。 –
aircraft
それは動作しませんか? – Larme