objective-c中的0x02,0x03十六进制字符

时间:2012-07-16 13:20:11

标签: objective-c string char hex

我目前正在研究服务器客户端项目,我正在编写一个小的tcp iPhone应用程序客户端。问题是,我要向服务器发送一个包含以下格式的“数据包”:

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]];

3 个答案:

答案 0 :(得分:0)

我在类似的问题中使用了NSMutableData,然后使用appendBytes(附加STX,ETX,CSM)或appendData(NSString)。

答案 1 :(得分:0)

尝试这种方式:

NSString *_command = @"\x02...\x09...\x03";

应该有效。

答案 2 :(得分:0)

以下是它的工作原理:

NSMutableData * mutableData = [[NSMutableData alloc] init];

// Appends STX
[mutableData appendData: [NSData dataWithBytes: "\x02" length:1]];

// Appends ETX
[mutableData appendData: [NSData dataWithBytes: "\x09" length:1]];

// Appends CSM
[mutableData appendData: [NSData dataWithBytes: "\x03" length:1]];

我的问题是服务器没有响应我的消息,但消息是正确的。