Строка по модулю Int из Javascript для Go - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь перевести этот код из 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 и т.д .. ничего не работает.

...