【发布时间】:2017-05-08 01:53:27
【问题描述】:
在Python中,你可以像这样直接用十六进制写; \x00\x01\x02。对于我的一个项目,我需要能够在 Swift 3 中做相同或类似的事情;我基本上是通过 websocket 进行通信的,我必须发送具有 0x01 或 0x13 等值的字节字符串,这些值没有等效的打印字符。
命令的格式将在 Python 中像这样表示; \x25\x00\x00\x01\x00,其中单个字节不仅是命令,而且是参数。出于这个原因,我需要能够在不影响另一个字节的情况下附加类似的字符串。
我一直在环顾四周,我曾经发现一个名为 Byte() 的 Swift 类,但是对于我来说,我无法弄清楚如何使用它。另外,我看到的很多教程都是基于接收字节数据或将字符串转换为二进制,这是我做不到的。
感谢您的帮助。
编辑:根据要求,这是我正在尝试做的一个示例;
在 Python 中:(可行)
import socket
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect(('localhost','8080'))
payload = b'\x25\x00\x00\x01\x00'
sock.send(payload)
resp = sock.recv(100)
print resp
在 Swift 中:(我需要填写 nil)
import UIKit
import Starscream
class ViewController: UIViewController, WebSocketDelegate{
var socket: WebSocket = WebSocket(url: URL(string: "localhost:8080")!)
// ... viewDidLoad, didReceiveMemoryWarning, and
// Starscream functions like websocketDidConnect
@IBAction func sendMessage(_ sender: UIButton){
var payload = nil //I need to write payload in Python above here
socket.write(payload)
}
}
【问题讨论】:
-
向我们展示一些反映您的问题的代码示例
-
我很确定您可以编写 c 级代码。不确定二进制。
-
@user3441734 使用代码 sn-ps 更新。
-
WebSocket 来自哪里?它的 .send() 函数的签名是什么?
-
如果您在谈论github.com/daltoniam/Starscream/blob/master/Source/…,则没有定义发送函数。