【发布时间】:2012-07-16 21:56:19
【问题描述】:
在过去的几个小时里,我一直在努力完成一项似乎很容易的任务。
我的应用正在通过 tcpip 与服务器通信。该协议要求每个请求的前 4 个字节是流的长度,顺序相反。例如,如果长度为 13,我需要提供(十进制){0,0,0,13};如果是 300,我需要提供 {0,0,44,256}。然后,实际数据如下。
显然,这在 Java 和 VB 中都非常简单(例如 BitConverter.GetBytes(sendString.Length).Reverse().ToArray())。但是在 obj-c 中我就是无法让它工作,我尝试了 NSString/NSData/NSArray 之间的各种转换,但没有成功。
提前致谢!
【问题讨论】:
-
嗯? {0,0,44,256} 不是有效的字节序列(因为 256 不是有效的字节值)。你只是按网络顺序(又名大端)写一个整数吗?
-
@Adam 是的,看起来 300 应该写成
{0,0,1,44},对吗?除非我错过了什么。再说一次,这个问题似乎指定使用一些奇怪的字节顺序,所以可能是{44,1,0,0}或{0,0,44,1}? -
@AdamRosenfield 我确定 OP 表示该字节为 0x01,但由于其位置,它代表 256。 (256*1)+44=300。
-
@Adam 是的,很抱歉,这是漫长的一天的结束,我对此感到非常沮丧(好吧,事实证明,我自己的缺点)。实际上,后一种情况下的正确表示是 {0,0,1,44}。感谢其他所有人指出这一点,而不是因为一个非常菜鸟的错误而扇我一巴掌:)
标签: objective-c bytearray