我正在尝试将此代码从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
循环,如下所示。
根据我对本主题Remainder/Modulus of string is a number的了解,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"
}
}
对于Javascript代码和Golang代码,此000001001100010000000001000111000001000000
都将变成0000010011000100000000010001110000010000000000
。如果可以的话,这是“有效的”。
但是,根据Javascript代码,此001011001001000100001110000001010000010000000101000100000000000010011001000000010000001001010010000001010100000101010011000000
应该变成0010110010010001000011100000010100000100000001010001000000000000100110010000000100000010010100100000010101000001010100110000000000
,但这就是我得到的00101100100100010000111000000101000001000000010100010000000000001001100100000001000000100101001000000101010000010101001100000000
(仅添加两个零而不是4)
我不知道该怎么办,我尝试将字符串解析为INT,HEXA,BINARY,OCTAL等。