gpt4 book ai didi

Javascript 二进制字符串,转十六进制,转base58,转回十六进制,转回字符串,随机错误

转载 作者:行者123 更新时间:2023-12-05 07:34:23 33 4
gpt4 key购买 nike

我正在学习区 block 链,并想创建一个创建地址的示例,纯粹出于教育目的——不会在生产附近的任何地方完成。

任务:创建 160 个随机位,将其转换为十六进制,将其转换为基数 58,然后通过逆向过程来测试正确性。

它有点管用,但是我在二进制前后的比较中断断续续地得到“假”。 hexStringToBinary 函数返回不同长度的字符串:

const bs58 = require('bs58');

//20 * 8 = 160
function generate20Bytes () {
let byteArray = [];
let bytes = 0;
while (bytes < 20) {
let byte = '';
while (byte.length < 8) {
byte += Math.floor(Math.random() * 2);
}
byteArray.push(byte);
bytes++;
}
return byteArray;
}

//the issue is probably from here
function hexStringToBinary (string) {
return string.match(/.{1,2}/g)
.map(hex => parseInt(hex, 16).toString(2).padStart(8, '0'));
}

const addressArray = generate20Bytes();
const binaryAddress = addressArray.join('');
const hex = addressArray.map(byte => parseInt(byte, 2).toString(16)).join('');
console.log(hex);

// then lets convert it to base 58
const base58 = bs58.encode(Buffer.from(hex));
console.log('base 58');
console.log(base58);

// lets see if we can reverse the process
const destructuredHex = bs58.decode(base58).toString();
console.log('hex is the same');
console.log(hex === destructuredHex);

// lets convert back to a binary string
const destructuredAddress = hexStringToBinary(destructuredHex).join('');
console.log('destructured address');
console.log(destructuredAddress);
console.log('binaryAddress address');
console.log(binaryAddress);

//intermittent false/true
console.log(destructuredAddress === binaryAddress);

最佳答案

开始使用 tdd 进行重构。意识到它不是零填充十六进制 < 16。我的 playground repo

关于Javascript 二进制字符串,转十六进制,转base58,转回十六进制,转回字符串,随机错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50130776/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com