2012-03-30 53 views
-3

我需要爲IOS找到以下代碼的等價物。IOS中需要MemoryStream c#

byte[] encodedMess; 
using (var stream = new MemoryStream()) 
    { 
    using (var writer = new BinaryWriter(stream)) 
    { 
     writer.Write(message.getType().ToString(); 
     writer.Write(message.toJSONString()); 
    } 
    encodedMess = stream.ToArray(); 
    } 

我已經嘗試了一些技巧和查找短路互聯網上的代碼,但沒有任何工程:(

你是我最後的機會......我必須有一個字節數組像encodedMess ..

感謝每一個幫助(對不起,我的英文不好)

+0

你是什麼意思在iOS?你需要這個翻譯成客觀的C? – Oded 2012-03-30 10:22:22

+0

是的,我需要它在objC – user1147981 2012-03-30 10:24:31

+3

我們不會爲你寫這個。你能告訴我們你到目前爲止所嘗試過的嗎? – Oded 2012-03-30 10:25:15

回答

0

你正在尋找被稱爲NSCoder的API,你會發現數以百計的問題和例子在這裏如何使用它計算器。

+0

好的thx。 NSCoder變量將用作流還是二進制Writer?我需要完全尊重編碼過的C#格式 – user1147981 2012-03-30 11:11:29

+0

如果你必須尊重其他平臺的二進制格式,'NSCoder'將不會工作,因爲它有自己的格式。你可以使用'NSOutputStream',但你必須自己創建數據的二進制表示。 (字符串的長度是如何存儲的?你需要使用哪種字節順序?等等) – MrTJ 2012-03-30 11:20:50

+0

:O這就是我所期望的。獲得相同的二進制表示是一件很難的事情。 – user1147981 2012-03-30 11:29:11

3

嘗試使用Coca Streams:

NSOutputStream *memoryStream = [NSOutputStream outputStreamToMemory]; 
[memoryStream open]; 
[memoryStream write:(uint8_t*)"Hello World" maxLength:11]; 
[memoryStream close]; 

NSData *data = [memoryStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; 

void *buffer = calloc(12, 1); 
NSInputStream *inputStream = [NSInputStream inputStreamWithData:data]; 
[inputStream open]; 
[inputStream read:buffer maxLength:11]; 
[inputStream close]; 

NSLog(@"%@", [NSString stringWithCString:buffer encoding:NSASCIIStringEncoding]);