像Python一样,直接编写二进制文件

2024-06-28 19:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,可以像这样直接用hex编写;\x00\x01\x02。对于我的一个项目,我需要能够在swift3中执行相同或类似的操作;我基本上是通过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)

^{pr2}$

Tags: 项目字符串命令字节socketrespsockpayload
1条回答
网友
1楼 · 发布于 2024-06-28 19:24:30

来自红蜘蛛

/**
     Write binary data to the websocket. This sends it as a binary frame.
     If you supply a non-nil completion block, I will perform it when the write completes.
     - parameter data:       The data to write.
     - parameter completion: The (optional) completion handler.
     */
    open func write(data: Data, completion: (() -> ())? = nil) {
        guard isConnected else { return }
        dequeueWrite(data, code: .binaryFrame, writeCompletion: completion)
    }

基于此,你必须

^{pr2}$

相关问题 更多 >