我目前正在一个服务器客户端项目,我正在写一个小的tcp iPhone应用程序客户端。问题是,我已经向服务器发送一个“数据包”具有以下formae:0x02,0x03十六进制字符在objective-c
0x02
+字符串+ 0x09
+一个int + 0x03
的问题是,我不知道如何包含0x02(如十六进制)。最后,我应该把所有东西都发送成NSData。
这是我到目前为止。
unsigned char tag_start = 0x02;
unsigned char tag_end = 0x03;
unsigned char tag_split = 0x09;
NSString * stringToSend = [NSString stringWithFormat: @"%c%@%c%@%c%@%c%@%c", tag_start, oobject, tag_split, oid, tag_split, oaction, tag_split, ovalue, tag_end];
NSData * dataToSend = [[NSData alloc] initWithData:[stringToSend dataUsingEncoding:NSASCIIStringEncoding]];
这是怎么回事? – kennytm 2012-07-16 13:42:20
错误的是,STX 0x02将变为NSString 0x32 – Thomas 2012-07-16 14:15:14
要将NSInteger(或无符号字符)转换为十六进制字符串,可以使用NSString的'%x'格式说明符。就像这样:'[NSString stringWithFormat @“0x%x”,tag_start“]'会产生0x2(与0x02的值相同) – 2012-07-16 14:20:09