for (int i=0; i < strlen(chars1); i++) {
//*buf=chars1[i];
NSLog(@"Received %c\n", chars1[i]);
ichar = [ NSString stringWithUTF8String:chars1[i] ];
NSLog(@"Received ", ichar);
counter=strlen(chars1)-i;
gnutls_record_send (session, [ichar UTF8String] , counter);
}
我正在尝试使用此方法向我的服务器发送信息,但不断收到警告:
警告:传递'stringWithUTF8String:‘的参数1会使指针来自整数而不进行强制转换
警告是针对此行的: ichar =[Chars1i][ NSString NSString WithUTF8String:chars1i ];
有没有什么办法可以将chars1i存储到临时字符或字符串中,并在我的循环中使用它进行发送?
已更新
我只是在寻找一种方法来解析一个NSString从开始字符到结束字符,然后能够使用它而不会收到这个警告:
从整型数生成指针,而不进行强制转换
发布于 2011-10-21 03:21:48
也许这就是你想要的。
NSString *unicodeString = [NSString stringWithUTF8String:chars1];
for (int i=0; i < [unicodeString length]; i++) {
NSString *ichar = [unicodeString substringWithRange:NSMakeRange(i, 1)];
NSLog(@"Received %@", ichar);
counter=strlen(chars1)-i;
gnutls_record_send (session, [ichar UTF8String] , counter);
}
这将在chars1中获取一个以UTF-8编码的字符串,并将每个字符(本身可能是1个字节或几个字节)的UTF-8编码发送到gnutls_record_send。
发布于 2011-10-21 02:04:37
您不能一次解析一个字符的UTF8 (对应关系不是一一对应的)。正确的解决方案取决于您正在解析的协议,该协议应该指定如何确定字符串的开始和结束时间。遵循协议将完成的字符串标识为原始字节数组,然后将其解析为UTF8以将其转换为字符串。
发布于 2011-10-21 02:05:05
您不需要从char数组中获取单个元素并执行所有这些操作。在NSString中有一个类方法,
+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc
cString
A C array of bytes. The array must end with a NULL character; intermediate NULL characters are not allowed.
//Use this
NSString* tempString = [NSString stringWithCString:chars1 encoding:NSUTF8StringEncoding];
https://stackoverflow.com/questions/7844227
复制