Я пытаюсь перевести этот код из Javascript в Go.
if(secret_binary % secret_alphabet_bitlength > 0) {
secret_binary += zeropad("0", secret_alphabet_bitlength - (secret_binary % secret_alphabet_bitlength));
}
secret_binary - это string
(представляет двоичный файл).
secret_alphabet_bitlength - это int
(6
вточнее).
Примечание: функция zeropad просто добавляет необходимое количество 0
.Я заменяю его на цикл for
, который вы видите ниже.
Из того, что я понял в этой теме Остаток / модуль строки - это число , к которому применяется ToNumber
значение, которое не является строкой.
Отлично, вот что я попробовал.
bToBig, _ := new(big.Int).SetString(secretBinary, 2)
nb := int64(secretAlphabetBitLength) - (bToBig.Int64() % int64(secretAlphabetBitLength))
if bToBig.Int64()%int64(secretAlphabetBitLength) > 0 {
for i := 0; int64(i) < nb; i++ {
secretBinary += "0"
}
}
Этот 000001001100010000000001000111000001000000
становится 0000010011000100000000010001110000010000000000
как для кода Javascript, так и для кода Голанга.Так что это "работает", если я могу так сказать.
Но, это 001011001001000100001110000001010000010000000101000100000000000010011001000000010000001001010010000001010100000101010011000000
должно стать 0010110010010001000011100000010100000100000001010001000000000000100110010000000100000010010100100000010101000001010100110000000000
согласно коду Javascript, но вот что я получаю 00101100100100010000111000000101000001000000010100010000000000001001100100000001000000100101001000000101010000010101001100000000
(вместо 4 добавляются только два нуля)
Я не делаюзнаю, что делать, я пытался разобрать строку в INT, HEXA, BINARY, OCTAL и т.д .. ничего не работает.