js中toString(16)的源码是啥? [复制]

Posted

技术标签:

【中文标题】js中toString(16)的源码是啥? [复制]【英文标题】: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 代码的逻辑?

【问题讨论】:

这只是将其转换为十六进制。有很多示例代码可用于从 dec 转换为 hex。 另见***.com/questions/923771/… 【参考方案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 为基数的数字可能看起来不那么热门。

以上是关于js中toString(16)的源码是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

究竟返回 EntityUtils.toString(response) 是啥?

js 进制转换

JS中的进制转换以及作用

C#中复制的事件是啥?

underscore.js源码解析对象

Object.toString()方法返回16进制地址