[Swift]二进制、八进制、十进制、十六进制之间的转换

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/ 
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10348029.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

整数文字可以写成:

  • 一个十进制数,无前缀,Decimal,简写为D
  • 一个二进制数,有0b前缀,Binary,简写为B
  • 一个八进制数,有0o前缀,Octal,简写为O
  • 一个十六进制数,有0x前缀,Hexadecimal,简写为H

1、二进制和十进制之间的转换

     十进制转二进制

1 var str = String(31,radix:2)
2 print(str)
3 //Print 11111 
 二进制转十进制 
 1 extension String{
 2    func BinaryToDecimal() -> Int {    
 3        var sum:Int = 0
 4        for c in self.characters {
 5            if let number = Int(String(c))
 6            {
 7                sum = sum * 2 + number
 8            }        
 9        }
10        return sum   
11    }
12 }
13 
14 //测试
15 print("11111".BinaryToDecimal())
16 //Print 31

2、八进制和十进制之间的转换

  十进制转八进制

1 var str = String(127,radix:8)
2 print(str)
3 //Print 177

     八进制转十进制 

 1 extension String{
 2    func OctalToDecimal() -> Int {    
 3        var sum:Int = 0
 4        for c in self.characters {
 5            if let number = Int(String(c))
 6            {
 7                sum = sum * 8 + number
 8            }        
 9        }
10        return sum   
11    }
12 }
13 
14 //测试
15 print("177".OctalToDecimal())
16 //Print 127

3、十六进制和十进制之间的转换

   十进制转十六进制

1 var str = String(255,radix:16)
2 print(str)
3 //Print ff

    十六进制转十进制 

 1 extension String{
 2    func HexToDecimal() -> Int {    
 3        var sum:Int = 0
 4        if let str:String = self.uppercased()
 5        {
 6            for i in str.utf8 {
 7                //0-9:从48开始
 8                sum = sum * 16 + Int(i) - 48 
 9                //A-Z:从65开始
10                if i >= 65 {              
11                    sum -= 7
12                }
13            }
14        }
15        return sum   
16    }
17 }
18 
19 //测试
20 print("ff".HexToDecimal())
21 //Print 255
原文地址:https://www.cnblogs.com/strengthen/p/10348029.html