这个问题与用ObjectiveC编写的iOS项目有关,该项目使用了一些C ++ - Headers。
我正在使用此方法使用TCP将消息发送到服务器。如您所见,有一个名为c ++的方法,它修改字符串以符合特定协议。此字符串将写入流。
-(void) writeToServer:(NSString*) str
{
int len = [str length];
const char* in_ = new char[len];
char* out_ = new char[len];
in_ = [str UTF8String];
len = binary8BitStringTo7BitStringEncoding::encode(in_, len, out_);
uint8_t* test = new uint8_t[len];
for (int i=0; i<len; ++i) {
test[i] = out_[i];
}
[outputStream write:test maxLength:len];
}
我打算使用cocoaasyncsocket-framework(http://code.google.com/p/cocoaasyncsocket/)而不是直接处理流。问题是:如何在使用此框架时实现相同的功能?
这是使用此框架写入服务器的内容:
NSString *warningMsg = @"Are you still there?\r\n";
NSData *warningData = [warningMsg dataUsingEncoding:NSUTF8StringEncoding];
[sock writeData:warningData withTimeout:-1 tag:WARNING_MSG];
这些是用于编码和解码的两种方法的定义
unsigned int decode(const char* string, unsigned int len, char* out);
unsigned int encode(const char* string, unsigned int len, char* out);
实际上我正在寻找一种方法将char *(编码方法的结果)发送到服务器,但我不确定整个“NSString * to char * to uint8_t * to NSString * conversion。” / p>
使用此框架处理此类转换以获得相同结果的最佳方法是什么?
提前感谢您的答案和花费的时间!
答案 0 :(得分:0)
我明白了,等效的方法看起来像这样:
-(void) writeToServer:(NSString*) str{
int len = [str length];
const char* in_ = new char[len];
char* out_ = new char[len];
in_ = [str cStringUsingEncoding:NSASCIIStringEncoding];
len = binary8BitStringTo7BitStringEncoding::encode(in_, len, out_);
[socket writeData:[NSData dataWithBytes:out_ length:len] withTimeout:-1 tag:1];
}