2015-01-05 228 views
0

我有一個關於NSString到字節轉換的問題。我想問題是 我想從字節創建NSData。這裏在下面的代碼中一切正常,但代替combinedStr我必須通過int variables.ie 0101,0102,...將NSString轉換爲字節

我得到字符串變量像@「0101」,@「0102」.... 。在情況下,如果我將組合字符串轉換爲int,那麼它給出的值爲101,102 ...但我想要0101,0102 ......任何人都可以請幫我解決這個問題。

NSData *valData = [NSData dataWithBytes:(Byte[]){254,1,200,0.5,combinedstring,0.4,1} length:7]; 

請記住combinedstring是一個String和變量。在組合字符串的地方,我們只能傳遞int值。

請讓我知道,如果我的問題不明確

+0

對此答案一看太 - http://stackoverflow.com/questions/27700431/iosconvert-string-to-hexadecimal-array/27700913#27700913 – Kampai

回答

2

可以的NSString一個實例轉換的NSData一個實例與 -dataUsingEncoding:allowLossyConversion:或C數組與-getCString:maxLength:encoding:(NSStringEncoding)encoding

在這兩種情況下,您都有一個指向對象的指針。到char[]。將該指針放入Byte數組中,將轉換指針並複製其值,但不會引用所引用的數據。

另外:在您的例子您嘗試保存0.4(零 - 週期 - 四)和0.5(零 - 週期 - 5)爲Byte[]。這可能不會完成你的工作。它會將該值轉換爲類型爲Byte(整數類型!)的值並存儲該值。大於255的整數值也將被轉換。

因此,您必須使用可變數據對象,並分別對不同類型的二進制表示進行連接。

一個例子:

NSData *stringData = [combinedString dataUsingEncoding:… allowLossyConversion:NO]; 
if (stringData == nil) 
{ 
    // error handling 
} 


NSMutableData *data = [NMutableData new]; 
Byte *byteArray; 
float *floatArray; 

// Adding byte data 
byteArray = (Byte[]){254,1,200}; 
[data appendBytes:byteArray length:3*sizeof(Byte)]; // Adds 254, 1, 200 

// Adding floating point data – Hopefully the receiver has the same floating point format. 
floatArray = (float[]){0.5}; 
[data appendBytes:floatArray length:1*sizeof(float)]; // Adds 4! bytes representing the float value 

// Adding string data – Hopefully the receiver uses the same string encoding 
[data appendData:stringData]; // Adds the bytes for the string in the above encoding. 
+0

謝謝你答案。請給我一些時間來測試它。 – SRI

+0

我在Safari中輸入它,所以可能出現一些錯別字。您應該瞭解指針,數組和二進制數據如何在C中工作。這只是一個示例。 –