【发布时间】:2013-08-10 14:47:45
【问题描述】:
我正在使用 google 协议缓冲区将一些数据从 C++ 服务器发送到 IOS 应用程序。我在IOS端使用这个函数将流字节转换为字符串:
-(NSString*)convertStreamBytesToString:(NSMutableData*)data
{
int len = [data length];
char raw[len];
[data getBytes:raw length:len];
NSString *protocStruct =[[NSString alloc] initWithBytes:raw length:len encoding:NSUTF8StringEncoding];
return protocStruct;
}
我的问题是有时这不起作用。我可以看到我发送和接收了所有字节,但是在转换时其中一些字节丢失了。例如,我得到 83 个字节,但在打印字符串时,我得到大约 20 个字符。其余的在哪里?这个转换方法有我不知道的问题吗?
【问题讨论】:
-
你试过
NSASCIIStringEncoding而不是NSUTF8StringEncoding吗? -
@CaptJak:是的,结果相同
-
它们都是可打印的字符吗?
-
您应该使用 base64 编码/解码来执行此操作。纯二进制数据可能并不总是有效的 UTF-8!
-
@MarcusAdams: 是的,我从服务器得到的是一个从 xml 文件中检索数据的结构
标签: ios objective-c