套接字响应标头为两位数的十六进制格式

时间:2018-04-28 12:46:05

标签: swift sockets hex

我有一个TCP套接字连接,我正在尝试响应请求消息。我已经说明了对请求的响应应采用以下格式:

Header  Data

其中标头包含两位数的十六进制格式的数据长度。我的回复数据为"202000000000000TEST0_OK "

由于响应长度为25个字符,我假设标题将是25的十六进制表示,因此为0x19。但是,在发送此邮件时,我会从我回复的设备中收到未知错误。

使用BlueSocket库,我使用以下方式发送回复:

if(message.contains("00000000000000001")) {
    reply = "202000000000000TEST0_OK  "
    var header: UInt8 = 0x19
    try socket.write(from: Data.init(bytes: &header, count: MemoryLayout<UInt8>.size))
    try socket.write(from: reply)
}

不幸的是,我没有任何进一步的错误信息。我很自信我对如何计算和发送标题的理解不正确......

编辑:我还尝试了以下所有失败的回复:

  • "25XXXXXXXXXXXXXXXXXXXXXXXXX"从数据字符串的十进制长度开始(25)。
  • "27XXXXXXXXXXXXXXXXXXXXXXXXX"在数据和标题字符串(27)的整个长度前面添加。
  • "19XXXXXXXXXXXXXXXXXXXXXXXXX"前面加上数据字符串长度的十六进制表示(25个字符,所以0x19)。
  • "1BXXXXXXXXXXXXXXXXXXXXXXXXX"前缀为数据和标题字符串的整个长度的十六进制表示形式(27个字符,所以0x1B)。

0 个答案:

没有答案