【问题标题】:Need MemoryStream c# in IOSIOS中需要MemoryStream c#
【发布时间】:2012-04-14 00:42:56
【问题描述】:

我需要为IOS找到以下代码的等价物。

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这样的字节数组……

感谢每一个帮助(对不起我的英语不好)

【问题讨论】:

  • 你在 iOS 中是什么意思?您需要将其翻译成目标 c 吗?
  • 我们不会为你写这个。你能告诉我们到目前为止你做了什么吗?
  • 我需要将一些类的信息放在一个字节数组中,但我是 Obj C 的初学者,我没有找到任何解决方案。

标签: c# objective-c ios stream binary


【解决方案1】:

尝试使用 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]);

【讨论】:

    【解决方案2】:

    您要查找的 API 称为 NSCoder。您将在 stackoverflow 中找到数百个关于如何使用它的问题和示例。

    【讨论】:

    • 好的,谢谢。 NSCoder 变量将用作流还是二进制 Writer ?我需要完全尊重 encodeMess 的 c# 格式
    • 如果您必须尊重其他平台的二进制格式,NSCoder 将无法正常工作,因为它有自己的格式。您可以使用NSOutputStream,但您必须自己创建数据的二进制表示。 (字符串的长度是如何存储的?你必须使用哪个字节顺序?等等)
    • :O 这就是我所期望的.. 获得相同的二进制表示是一项艰巨的工作..
    • 我读到我无法将字符串转换为二进制。这样对吗 ?因为我需要转换int、string、bool
    • 你有 NSOutputStream 的例子吗?我正在尝试找到解决方案,但我没有:(
    猜你喜欢
    • 2012-08-26
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多