Мне было интересно, как вы конвертируете число base10 из одной базы в другую без использования strconv
в Golang?
Не могли бы вы дать мне несколько советов?
Мне было интересно, как вы конвертируете число base10 из одной базы в другую без использования strconv
в Golang?
Не могли бы вы дать мне несколько советов?
Используйте пакет math и журнал идентифицировать:
журнал_77 (х) = журнал (х) / журнал (77)
package main
import (
"fmt"
"math/big"
)
func main() {
fmt.Println(big.NewInt(1000000000000).Text(62))
}
Вероятно, это мошенничество, но я думаю, вы могли бы взглянуть на реализацию strconv.FormatInt и создайте собственный код, используя его в качестве примера. Таким образом, вы не используете его напрямую, вы сами его реализовали.
Вы можете использовать эту функцию для преобразования любого десятичного числа в любое основание с набором символов по вашему выбору.
func encode(nb uint64, buf *bytes.Buffer, base string) {
l := uint64(len(base))
if nb/l != 0 {
encode(nb/l, buf, base)
}
buf.WriteByte(base[nb%l])
}
func decode(enc, base string) uint64 {
var nb uint64
lbase := len(base)
le := len(enc)
for i := 0; i < le; i++ {
mult := 1
for j := 0; j < le-i-1; j++ {
mult *= lbase
}
nb += uint64(strings.IndexByte(base, enc[i]) * mult)
}
return nb
}
Вы можете использовать его так:
// encoding
var buf bytes.Buffer
encode(100, &buf, "0123456789abcdef")
fmt.Println(buf.String())
// 64
// decoding
val := decode("64", "0123456789abcdef")
fmt.Println(val)
// 100
strconv
? - person ymonad   schedule 02.02.2017strconv
, но изучив задачу, я обнаружил, что в требованиях не было использования этого пакета. - person Elmor   schedule 02.02.2017