Swift中的二进制
我正在尝试用Swift转换二进制和其他东西,这是我的代码:Swift中的二进制,swift,binary,swift3,Swift,Binary,Swift3,我正在尝试用Swift转换二进制和其他东西,这是我的代码: let hexa = String(Int(a, radix: 2)!, radix: 16)// Converting binary to hexadecimal 我发现了错误 无法将“Int”的值类型转换为预期的参数类型“String” 你误解了整数的存储方式 没有“十进制”Int,“十六进制”Int等概念。当内存中有Int时,它总是二进制的(基数2)。它存储为64或32位的序列 当您尝试为Int分配一个类似10(十进制)、0xA
let hexa = String(Int(a, radix: 2)!, radix: 16)// Converting binary to hexadecimal
我发现了错误
无法将“Int”的值类型转换为预期的参数类型“String”
你误解了整数的存储方式 没有“十进制”
Int
,“十六进制”Int
等概念。当内存中有Int
时,它总是二进制的(基数2)。它存储为64或32位的序列
当您尝试为Int
分配一个类似10
(十进制)、0xA
(十六进制)、0b1010
(二进制)的值时,编译器会进行必要的解析,以转换该Int
的源代码字符串表示形式,转换为可存储在Int
的64位或32位内存中的一系列位
当您尝试使用Int
时,例如在print(a)
中,会在后台进行转换,将Int
在内存中的二进制表示形式转换为字符串
,其符号表示基数10中的Int
,使用我们习惯使用的符号(0-9
)
更基本的是,它有助于理解基数的概念是一种纯粹为了方便我们处理数字而设计的结构。抽象地说,数字的大小是一个独立的实体,与任何基数都不耦合。震级可以用文本表示法和基数具体表示
这部分Int(a,基数:2)
,没有意义。即使假设存在这样一个初始值设定项(Int.init?(Int,基数:Int)
),它也不会做任何事情!。如果a=5
,则a
存储为二进制0b101
。然后将其从二进制解析为Int,给您<代码>0b101,或与开始时相同的5
另一方面,Strings
可以有基数的概念,因为它们可以是十进制Int
、十六进制Int
等的文本表示。要从包含数字的String
转换,可以使用。这里的关键是它需要一个字符串
参数
let a = 10 //decimal 10 is stored as binary in memory 1010
let hexa = String(a, radix: 16) //the Int is converted to a string, 0xA
a
的声明是什么?如果a
是一个字符串
如“10101011”
“a”是我创建的一个Int,则此代码有效。让a=10表示数字2,因为它从二进制变为十六进制