我需要在套接字上接收嵌套的整数数组,例如
[[1,2,3],[4,5,6],...]
子数组总是3个值,主数组的长度变化,但事先已知。
搜索谷歌给了我很多选择,从单独发送每个整数到只是将缓冲区转换为我认为它应该是什么(对我来说似乎有些不安全),所以我正在寻找一种安全快捷的方法这样做。
答案 0 :(得分:1)
“子阵列”并不重要,最后你将发送3个 n 号码并让接收者将它们解释为 n 3行每个都有数字。
对于任何外部表示,您将不得不选择一个精度,即每个整数应该使用多少位。类型int32_t
没有明确指定,因此可能选择32位并将每个数字视为var completionHandler : completionBlock = { _ in }
。
只要外部整数表示有多个字节,您就不得不担心这些字节的顺序。传统上使用网络字节排序(“大端”),但是现在许多系统都观察到大多数硬件是小端的,所以他们使用它。在这种情况下,您可以一次性将整个源数组写入套接字(假设您当然使用TCP / IP套接字),可能在行数或整数总数之前。
答案 1 :(得分:0)
假设带宽和数据大小不是非常关键,我建议,将阵列串行化为字符串是一种安全且独立于平台/体系结构的方式来传输这样的阵列。这具有以下优点:
缺点是,必须通过通道传输更多字节,这是最好的二进制编码所必需的。
如果您想使用即用型库来序列化/反序列化数组,您可以查看许多可用的JSON库之一。 http://www.json.org/提供了一个包含多个实现的列表。
答案 2 :(得分:0)
按照您想要的方式对其进行序列化,这有两个主要可能性:
在C中,您可以使用XDR例程正确编码数据。