如何在groovy中将值转换为基数16或基数2或十进制?

问题描述 投票:0回答:1

我需要实现一个函数 toBase(a,b) ,其中 'b' 是需要转换为 groovy 中的基数 'a' 的值。需要有关此功能的帮助。

groovy
1个回答
0
投票
  • 包含从 0 到 Z 的数字和字母的字符串,涵盖基数高达 36 的基本系统。

  • while 循环不断地将 b 除以 a,计算余数,并使用该余数从digits 中获取相应的数字。该过程一直持续到 b 变为零。

  • 通过将每个数字添加到结果字符串前面来反向构建结果。

def toBase(a, b) {
    if (a < 2 || a > 36) {
        throw new IllegalArgumentException("Base must be between 2 and 36")
    }

    String digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    def result = ""
    
    while (b > 0) {
        int remainder = b % a
        result = digits[remainder] + result
        b = b.intdiv(a)
    }
    
    return result == "" ? "0" : result
}

println toBase(2, 255)   // Binary representation of 255 -> 11111111
println toBase(16, 255)  // Hexadecimal representation of 255 -> FF
© www.soinside.com 2019 - 2024. All rights reserved.