当前位置: 首页 > 面试题库 >

如何在Swift中使用htonl设置整数字节序?

梁丘凯定
2023-03-14
问题内容

我正在尝试htonl()在Swift中使用设置整数字节序,但是编译器没有找到该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宏的形式实现,因此无法迅速使用。

但是,看起来这在Swift操场上目前无法使用。Playground execution failed: error: error: Couldn't lookup symbols: __OSSwapInt32尽管CoreFoundation文档现在在Swift中为其字节交换方法包括了方法签名,但我还是遇到了错误。

有趣的是,它看起来像的至少一部分<arpa/inet.h>已经被移植到迅速,如方法,如inet_ntoa()inet_addr()可供斯威夫特,但htonl家庭是没有的。



 类似资料:
  • 问题内容: 我想在应用程序委托中设置rootViewController .. 问题答案: 你可以做这样的事情。

  • 我想在不同的情况下芳香地改变一些约束。 声明来自情节提要的约束: 这是我的代码,我想在其中更改约束: 但是约束仍然没有改变。 这是我的手机ForRowAt func: 提前感谢您的帮助!

  • 问题内容: 我想要一个使用样式的单元格。 我最初的Objective-C代码是: 在已经在SO上搜索了几个问题之后,我想像这样在Swift中编写它: 但这并不能让我说我想要一种风格。所以我尝试了这个: 这给了我一个牢房,但是却没有让我。 我已经研究了更多内容,并观看了此视频教程,但是他创建了一个单独的对象,我认为这是不必要的,因为我之前在Obj- C中实现了相同的效果。 有任何想法吗?谢谢。 问题

  • 问题内容: 在早期版本的Swift中,可以使用以下代码创建延迟: 但现在,斯威夫特3时,Xcode自动改变6个不同的东西,但随后出现以下错误:“无法转换到预期值又名”。 在Swift 3中运行一系列代码之前,如何创建延迟? 问题答案: 经过大量研究,我终于找到了答案。 这会在Swift 3和Swift 4中创建所需的“等待”效果。

  • 问题内容: 我知道Java不允许无符号类型,所以我想知道它如何将整数转换为字节。假设我有一个值为255的整数a,并且将该整数转换为一个字节。该值表示在字节11111111中吗?换句话说,该值是否更多地视为带符号的8位整数,还是仅直接复制该整数的后8位? 问题答案: 这称为缩小原始转换。根据规格: 将有符号整数缩小为整数类型 T会 简单地丢弃除 n个 最低阶位以外的所有位,其中 n 是用于表示类型

  • 我已经尝试在Objective-C中创建HTTP Get。 它使用中的,并使用选择或。 并通过以下代码设置标头: