为有牺牲多壮志,敢教日月换新天。

HJ5 进制转换

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

热烈欢迎,请直接点击!!!

进入博主App Store主页,下载使用各个作品!!!

注:博主将坚持每月上线一个新app!!!

描述

写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
 
数据范围:保证结果在 
 
注意本题有多组输入

输入描述:

输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder.com/discuss/276处理多组输入的问题。

输出描述:

输出该数值的十进制字符串。不同组的测试用例用\n隔开。

示例1

输入:
0xA
0xAA
输出:
10
170
import Foundation

while let line = readLine() {
    let str = line.uppercased().suffix(line.count - 2)
    var sum = 0
    for i in str.utf8 {
        sum = sum * 16 + Int(i) - 48 // 0-9 从48开始
        if i >= 65 {                 // A-Z 从65开始,但有初始值10,所以应该是减去55
            sum -= 7
        }
    }
    print(sum)
}
while var input = readLine() {
    if input.lowercased().hasPrefix("0x") {
        input = String(input[String.Index(utf16Offset: 2, in: input) ..< input.endIndex])
    }
    let i = Int(input,radix: 16)
    print(String(i!, radix: 10))
}
while let line = readLine() {
    let str = line.uppercased().suffix(line.count - 2)
    var sum = 0
    for i in str.utf8 {

        sum = sum * 16 + Int(i) - 48
        if i >= 65 {
            sum -= 7
        }
    }
    print(sum)
}

 

posted @ 2021-11-14 20:39  为敢技术  阅读(459)  评论(0编辑  收藏  举报