【问题标题】:Send 0xF8 byte over TCP通过 TCP 发送 0xF8 字节
【发布时间】:2014-11-11 23:13:34
【问题描述】:

我正在使用 Asyncsocket 通过 TCP 发送字节。我的代码可以正常工作,但是在发送字节 0xF8 时,我遇到了问题。

这是我尝试过的(在下面的评论中)和代码:

NSString *ip_current = self.text_ip.text;
sockethost=ip_current;
socketport=9100;
[self   connect];

//a working one as long as I don't use 0xF8
NSData   *dataStream  = [[NSString stringWithFormat:@"%c%c",0x1d,0x31] dataUsingEncoding:NSUTF8StringEncoding];
[self.socket writeData:dataStream withTimeout:1 tag:1];

 //This one below will give 0x1d, 0xc3,0xb8 (After some research I found that this is due to encoding issue with UTF8)
 NSData   *dataStream  = [[NSString stringWithFormat:@"%c%c", 0x1d, 0xf8 dataUsingEncoding:NSUTF8StringEncoding];
//People suggest that using ASCII encoding, this time I don't get 3 bytes but 2 bytes with wrong data with 1d and 6f(f8 change to 6f)
NSData   *dataStream  = [[NSString stringWithFormat:@"%c%c%c",0x1d,0xf8,0x31] dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

[self.socket disconnectAfterWriting];

所以,无论我使用什么编码,都有问题。有谁知道如何解决这个问题?提前致谢!!!

【问题讨论】:

  • 不要为此使用字符串。您的数据不是字符串。
  • 好的,但是我应该使用哪种方法?我也是对象 C 的新手,你能告诉我吗?这也是我想问的一个问题,除了 NSData *dataStream = [[NSString stringWithFormat:@"%c%c", 0x1d, 0xf8 dataUsingEncoding:NSUTF8StringEncoding];在这里使用NSString,我应该用什么来通过F8?

标签: objective-c nsstring byte nsdata asyncsocket


【解决方案1】:

你只需要一个字节。字符串与此无关。从字节创建NSData,而不是字符串。

uint8_t byte = 0xF8;
NSData *dataStream = [NSData dataWithBytes:&byte length:1];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    相关资源
    最近更新 更多