我正在尝试htonl()在Swift中使用设置整数字节序,但是编译器没有找到该htonl()方法。
htonl()
我一直以此为参考:将NSInteger附加到NSMutableData
这是我的代码:
import Foundation import CFNetwork import CoreFoundation var data = NSMutableData() var number : UInt32 = 12 var convertedNumber : UInt32 = htonl(number) data.appendBytes(&convertedNumber, length: 4)
我刚刚在操场上跑步。错误是:
Use of unresolved identifier 'htonl'
更新 :马丁R的答案是当前版本的Swift的正确答案:https : //stackoverflow.com/a/24653879/195691
-
您应该使用CFSwapInt32HostToBig()CoreFoundation方法,因为htonl它很可能以C宏的形式实现,因此无法迅速使用。
CFSwapInt32HostToBig()
htonl
但是,看起来这在Swift操场上目前无法使用。Playground execution failed: error: error: Couldn't lookup symbols: __OSSwapInt32尽管CoreFoundation文档现在在Swift中为其字节交换方法包括了方法签名,但我还是遇到了错误。
Playground execution failed: error: error: Couldn't lookup symbols: __OSSwapInt32
有趣的是,它看起来像的至少一部分<arpa/inet.h>已经被移植到迅速,如方法,如inet_ntoa()和inet_addr()可供斯威夫特,但htonl家庭是没有的。
<arpa/inet.h>
inet_ntoa()
inet_addr()