2016-10-03 14 views
-1

char*を入力パラメーターとし、それをJSONにシリアル化する関数を記述しようとしています。char * to NSDataの問題

入力パラメータoptionsをNSDataに変換する際に問題が発生しています。これは動作しませんでした

NSData *data = [NSData dataWithBytes:options length:sizeof(options)];

:私は、次のコード行を使用していました。コードの異なるセットは、仕事をした:

NSString* stringFromChar = [[NSString alloc] initWithUTF8String:options]; NSData * data = [stringFromChar dataUsingEncoding:NSUTF8StringEncoding];

私はNSStringのにchar*から私のコードを変換する必要があったし、その後のNSDataに、なぜ私が直接それを行うことができなかった理由について興味があります。この仲介ステップなしで直接char*をNSDataに変換する方法はありますか?ありがとう。

+3

'のはsizeof(オプション)は、'あなたはそれがあることを期待していないものを最も可能性が高いです。その値を出力するには 'NSLog'を使います。または、質問をより多くの文脈に与えるためにいくつかのコードを追加してください。 – user3386109

+1

strlen()のドキュメントを見てください。 –

答えて

1

コメントが示すように、sizeof(options)ここでoptionschar *です。文字列の長さではなく、ポインタのサイズを生成します。また、コメントで指摘し、あなたが望むものである第一0x0の、までstrlen(options)カウント文字...

NSData *data = [NSData dataWithBytes:options length:strlen(options)]; 
// options must be null-terminated