📅  最后修改于: 2023-12-03 15:00:36.527000             🧑  作者: Mango
EOSIO是一种区块链平台,它允许开发人员构建去中心化应用程序(DApps)。每个DApp都有一个唯一的名称,它是一个字符串,但它在EOSIO中被编码为一个整数。
在JavaScript中,您可以使用一个简单的函数来将EOSIO名称转换为整数:
function eosNameToUint64(name) {
var charmap = ".12345abcdefghijklmnopqrstuvwxyz";
var result = new Uint32Array(2);
for (var i = 0; i < 12; i++) {
var c = 0;
if (i < name.length && i <= 12) {
c = charmap.indexOf(name.charAt(i));
}
if (i < 11) {
c &= 0x1f;
c <<= 64 - 5 * (i + 1);
} else {
c &= 0x0f;
}
result[Math.floor(i / 6)] |= c;
}
return result;
}
该函数接受一个名字字符串作为参数,并返回一个 Uint64
数组,它包含将名字编码为 uint64_t
的两个 32 位整数。其中高 32 位是最后 6 个字符编码的值,低 32 位是余下的字符编码的值。
要使用该函数,请按如下方式调用它:
var name = "mycontract";
var uint64 = eosNameToUint64(name);
console.log(uint64); // [ 2609131774, 1701997387 ]
上面的例子将 mycontract
转换为 uint64_t
数组 [ 2609131774, 1701997387 ]
。
EOSIO设计的很多方面都比较复杂,但对于大多数DApp开发人员来说,将名称编码为整数可能是您需要的最简单的EOSIO编码操作之一。