尝试使用 Discord bot 将用户消息从十进制转换为十六进制
Trying to convert users message into hex from decimal using Discord bot
好的,我有这个
Commands.hex = {
name: 'hex',
help: "I'll convert your steamid for you",
timeout: 10,
level: 0,
fn: function (msg, suffix) {
msg.reply('Steam64').then((m) => {
m.edit('<@' + msg.author.id + '>, Steam ID Converted: ' + suffix.toString(16)).slice(-2).toUpperCase()
})
}
}
我正在努力让它做这个网站做的事
http://www.binaryhexconverter.com/decimal-to-hex-converter
我只是想让它为我的 discord 机器人转换,谢谢!
事实证明,您的值:76561198262006743 比 Number.MAX_SAFE_VALUE
大得多,即 (2^53 -1)。这将在尝试进行算术运算时导致未定义的行为。
例如,在 Google Chrome 上,当仅在控制台中输入数字并按回车键时,该值变为 76561198262006740(注意末尾的 3 变为 0),这意味着十六进制转换也不正确。
一个简单的解决方案是,因为您已经拥有字符串形式的值,所以执行您自己的十进制-> 十六进制转换。
他可以在这里找到一个这样的算法:
Number#toString(16)
和dec2hex(String)
的结果小对比:
function dec2hex(str){ // .toString(16) only works up to 2^53
var dec = str.toString().split(''), sum = [], hex = [], i, s
while(dec.length){
s = 1 * dec.shift()
for(i = 0; s || i < sum.length; i++){
s += (sum[i] || 0) * 10
sum[i] = s % 16
s = (s - sum[i]) / 16
}
}
while(sum.length){
hex.push(sum.pop().toString(16))
}
return hex.join('')
}
num = "76561198262006743"
console.log("dec2Hex: " + dec2hex(num))
console.log("toString: " + parseInt(num).toString(16))
好的,我有这个
Commands.hex = {
name: 'hex',
help: "I'll convert your steamid for you",
timeout: 10,
level: 0,
fn: function (msg, suffix) {
msg.reply('Steam64').then((m) => {
m.edit('<@' + msg.author.id + '>, Steam ID Converted: ' + suffix.toString(16)).slice(-2).toUpperCase()
})
}
}
我正在努力让它做这个网站做的事 http://www.binaryhexconverter.com/decimal-to-hex-converter
我只是想让它为我的 discord 机器人转换,谢谢!
事实证明,您的值:76561198262006743 比 Number.MAX_SAFE_VALUE
大得多,即 (2^53 -1)。这将在尝试进行算术运算时导致未定义的行为。
例如,在 Google Chrome 上,当仅在控制台中输入数字并按回车键时,该值变为 76561198262006740(注意末尾的 3 变为 0),这意味着十六进制转换也不正确。
一个简单的解决方案是,因为您已经拥有字符串形式的值,所以执行您自己的十进制-> 十六进制转换。
他可以在这里找到一个这样的算法:
Number#toString(16)
和dec2hex(String)
的结果小对比:
function dec2hex(str){ // .toString(16) only works up to 2^53
var dec = str.toString().split(''), sum = [], hex = [], i, s
while(dec.length){
s = 1 * dec.shift()
for(i = 0; s || i < sum.length; i++){
s += (sum[i] || 0) * 10
sum[i] = s % 16
s = (s - sum[i]) / 16
}
}
while(sum.length){
hex.push(sum.pop().toString(16))
}
return hex.join('')
}
num = "76561198262006743"
console.log("dec2Hex: " + dec2hex(num))
console.log("toString: " + parseInt(num).toString(16))