【问题标题】:What is the source code of toString(16) in js? [duplicate]js中toString(16)的源码是什么? [复制]
【发布时间】:2016-05-23 10:30:03
【问题描述】:

我很想知道 javascript 中.toString(16) 的源代码因为我想检查 dec 代码如何转换为 hex 代码的逻辑?

【问题讨论】:

标签: javascript jquery


【解决方案1】:
Base := 16
HexNumber := ""
while(DecNumber > 0) {
    HexNumber := Concat(DecNumber % Base, HexNumber)
    DecNumber := Floor(DecNumber / Base)
}

适用于任何基地。在十六进制中,显然您必须将 10+ 转换为 A-F。

编辑:这是 javascript 中的一个版本:

function toBaseString(base, decNumber) {
    var hexNumber = '';
    while(decNumber > 0) {
        var hexDigit = decNumber % base;
        if(hexDigit >= 10) {
            hexDigit = String.fromCharCode(hexDigit + 87);
        }
        hexNumber = hexDigit + hexNumber;
        decNumber = Math.floor(decNumber / base);
    }
    return hexNumber;
}

【讨论】:

  • 可以改成 JavaScript 吗?这不是 JavaScript 对吧?
  • @PraveenKumar 这是 javascript 版本。如果是十六进制字符串,还有一个附加部分可以将 10 多个数字转换为 a-f。与base 2同样有效。
  • 看起来很棒的哥们。
  • 嗨,尼尔,请解释一下这一行 --> hexDigit = String.fromCharCode(hexDigit + 87);
  • 在 ASCII 中,97 对应于 'a'。调用 String.fromCharCode 将数字转换为其等效的 ascii 字符,因此通过采用至少为 10 的 hexDigit 并添加 87,我将其从 1 映射到 1 到 ascii 字符。所以 10 变成了 'a',11,变成了 'b' 等等。如果我使用基数 20,那么我会开始使用像 'j' 这样的字符。也就是说,以 9842 为基数的数字可能看起来不那么热门。
猜你喜欢
  • 2014-01-12
  • 2023-03-19
  • 2011-07-28
  • 1970-01-01
  • 2016-05-29
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多