【发布时间】:2020-04-29 06:50:36
【问题描述】:
我在iOS中使用GCDAsyncSocket实现socket,接收包头先使用socket.readData(toLength: 5, withTimeout: -1, tag: 0),然后在didReaddelegate中计算body长度,使用socket.readData(toLength: bodySize, withTimeout: -1, tag: 0)继续接收body包
socket包的头部有5个字节 bytes[0] 是 type ,其他四个字节是 body 的大小
大小在java中从Int转换为字节
byte[] header = new byte[5];
header[0] = type; //package type
header[1]=(byte) ((length>>24)&0xff); //package size
header[2]=(byte) ((length>>16)&0xff); //package size
header[3]=(byte) ((length>>8)&0xff); //package size
header[4]=(byte) (length&0xff); //package size
return header;
在 swift 中,我使用 let bytes = [UInt8](data) 将数据转换为 socket(_ sock: GCDAsyncSocket, didRead data: Data, withTag tag: Int) 中的字节
因为 swift 中的 bytes 数组是 UInt8 并且与 java bytes( -127 ~ 127 ) 不同
所以我想知道如何将大小字节转换为 Int
【问题讨论】:
标签: swift gcdasyncsocket