2016-10-03 54 views
-1

我正在嘗試編寫一個函數,它將char*作爲輸入參數,並將其序列化爲JSON。char *到NSData問題

我遇到了將輸入參數options轉換爲NSData的問題。我用下面的代碼行:

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

這沒有奏效。一組不同的代碼做了工作:

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

我很好奇,爲什麼有必要我的代碼從char*轉換爲一個NSString,然後NSData的,爲什麼我不能直接做。有沒有一種方法可以直接將char*轉換爲NSData而無需中間步驟?謝謝。

+3

'的sizeof(選項)'是最有可能你希望它是不是什麼。使用'NSLog'輸出該值。或者添加一些更多的代碼來提供更多的上下文。 – user3386109

+1

查看strlen()的文檔。 –

回答

1

正如註釋所示,sizeof(options)其中optionschar *會產生指針的大小,而不是字符串的長度。另外在評論中指出,strlen(options)數字符,直到達到第一個0x0,這是你想要的...

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