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)的源码是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章