小编Mic*_*ata的帖子

Swift本机函数将数字作为十六进制字符串

对于任何(至少整数)数字,是否有任何本机Swift方法可以在字符串中获取其十六进制表示形式?和逆.它不能使用Foundation.例如,String类有一个函数

func toInt() -> Int?
Run Code Online (Sandbox Code Playgroud)

它将表示整数的字符串转换为其Int值.我正在寻找类似的东西,使用十六进制字符串.我知道这很容易实现,但如果Swift有它,那就已经好了.否则,如果您已经使用String和Int的扩展来实现以下目的:

let anHex = "0xA0"
if let anInt = anHex.toInt() {
   println(anInt)               // prints 128
   println(anInt.toHexString()) // prints "0xA0"
}
Run Code Online (Sandbox Code Playgroud)

我知道这不是火箭科学,但万一请分享.

PS:这与这个问题类似,不同之处在于它与Foundation框架非常相关,而我没有在我的代码中使用它(我也没有导入任何其他内容)而且现在我想保留它这样,也是为了学习目的.

macos hex numbers ios swift

40
推荐指数
3
解决办法
4万
查看次数

Int到UInt(反之亦然)在Swift中进行位转换

我正在寻找一种直接的方法来将Int的位值转换为UInt,反之亦然.例如(为简单起见,使用8位整数)我想实现以下目的:

let unsigned: UInt8 = toUInt8(-1)  // unsigned is 255 or 0xff
let signed:   Int8  = toInt8(0xff) // signed is -1 
Run Code Online (Sandbox Code Playgroud)

起初我提出了以下解决方案:

let unsigned = unsafeBitCast(Int8(-1), UInt8.self)
let signed   = unsafeBitCast(UInt8(0xff), Int8.self)
Run Code Online (Sandbox Code Playgroud)

但Apple在"unsafeBitCast()"文档中声明如下:

..警告::打破Swift类型系统的保证; 小心使用.几乎总有一种更好的方法可以做任何事情.

有没有人有更好的方法?

binary macos casting ios swift

21
推荐指数
2
解决办法
2万
查看次数

标签 统计

ios ×2

macos ×2

swift ×2

binary ×1

casting ×1

hex ×1

numbers ×1