gpt4 book ai didi

ios - 将字节附加到 NSInputStream 以便稍后顺序读取

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:11 29 4
gpt4 key购买 nike

我正在从服务器按顺序获取 NSData block ,超过大约。 4096 字节,按顺序。每个接收到的 block 的大小可能不同。

我想做的是将所有这些字节附加到某处,同时从数据的开头开始读取,顺序一次 512 个字节 最大值。

在搜索过程中,我了解了如何使用 NSInputStream,下面是代码片段:

        uint8_t bytes[512];
UInt32 length;

NSInputStream *stream = [[NSInputStream alloc] initWithData:aData];
[stream open];
while (((length = [stream read:bytes maxLength:512]) > 0)) {
if ([self.inputStreamer isKindOfClass:[PLAudioInputStreamerNoOpenClose class]]) {
[self.inputStreamer hasData:bytes length:length];
}
}

虽然这只是工作,但初始化的 NSInputStream 似乎不允许在初始化后附加额外的字节,所以我能想到的唯一方法是初始化 NSInputStreams 对于每个数据 block ,阻塞直到它到达末尾,继续对下一个字节 block 执行相同的操作,就像上面的代码一样。

对于此类任务,是否有更优选的解决方案?任何帮助将不胜感激。谢谢,

最佳答案

您需要一个“读写”流。 NSInputStream 是只读的,NSOutputStream 是只写的。

如果我是你,我只使用一个 NSMutableData 和一个 int 变量作为“当前阅读位置”。

NSMutableData* myData = [[NSMutableData alloc] init];
NSInteger myPos = 0;

[myData appendData:..];
...
// need to check the range (myPos ~ [myData length])
NSData* nextBlockToRead = [NSData dataWithBytesNoCopy:((char*)[myData bytes] + myPos) length:512];
myPos += 512;

关于ios - 将字节附加到 NSInputStream 以便稍后顺序读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23692849/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com