小编frs*_*rsh的帖子

Base64使用NSData块编码文件

更新4
Per Greg的建议我创建了一对图像/文本,使用100k块显示从37k图像到base64编码的输出.由于文件只有37k,所以可以说循环只迭代一次,因此没有附加任何内容.另一对使用10k块显示从相同的37k图像到base64编码的输出.由于文件是37k,循环迭代四次,并且数据被明确附加.

对这两个文件进行差异显示,在10kb块文件上有一个很大的区别,它从第214行开始,到第640行结束.

更新3
这是我的代码现在的位置.清理了一下但仍产生相同的效果:

// Read data in chunks from the original file
[originalFile seekToEndOfFile];
NSUInteger fileLength = [originalFile offsetInFile];
[originalFile seekToFileOffset:0];
NSUInteger chunkSize = 100 * 1024;
NSUInteger offset = 0;

while(offset < fileLength) {
    NSData *chunk = [originalFile readDataOfLength:chunkSize];
    offset += chunkSize;

    // Convert the chunk to a base64 encoded string and back into NSData
    NSString …

iphone base64 objective-c nsdata nsfilehandle

8
推荐指数
1
解决办法
4622
查看次数

来自NSInputStream的NSData dataWithBytesNoCopy

我正在努力将图像数据从文件转码为base64编码的字符串,然后在使用NSStream读取文件时返回字节.我想我差不多了,但是在转换过程中我在各个点继续遇到EXC_BAD_ACCESS.

我对NSStream和缓冲区的世界相当新,所以如果我采取绝对错误的方法,请随时告诉我.

这是我到目前为止所得到的:

// Copy the bytes from our file input stream buffer
void *base64buffer = malloc(self.buffer[self.bufferOffset]);

// Convert the bytes to NSData for the base64 encode
NSData *dataToEncode = [NSData dataWithBytesNoCopy:base64buffer length:sizeof(base64buffer) freeWhenDone:YES];

// Convert our NSData into a base64 encoded string
NSString *base64EncodedData = [dataToEncode base64EncodedString];

// Convert our base64 encoded string back into NSData
NSData *encodedData = [base64EncodedData dataUsingEncoding:NSUTF8StringEncoding];

// Write the bytes to our output stream
bytesWritten = [self.producerStream write:[encodedData bytes] maxLength:[encodedData length]];

// Clean up …
Run Code Online (Sandbox Code Playgroud)

iphone sdk objective-c nsdata nsstream

0
推荐指数
1
解决办法
5433
查看次数

标签 统计

iphone ×2

nsdata ×2

objective-c ×2

base64 ×1

nsfilehandle ×1

nsstream ×1

sdk ×1