我正在将图像数据从文件转码为 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
dataToEncode = nil;
base64EncodedData = nil;
encodedData = nil;
free(base64buffer);