Rumah > pembangunan bahagian belakang > Golang > Bagaimana Mengendalikan Rentetan Heksadesimal Lebih Besar Daripada Jenis Integer Terbina Dalam Go?

Bagaimana Mengendalikan Rentetan Heksadesimal Lebih Besar Daripada Jenis Integer Terbina Dalam Go?

Patricia Arquette
Lepaskan: 2024-12-15 18:08:09
asal
694 orang telah melayarinya

How to Handle Hexadecimal Strings Larger Than Go's Built-in Integer Types?

Cara Menghuraikan Rentetan Heksadesimal Bersaiz Besar dalam Go

Menukar rentetan perenambelasan kepada nombor perpuluhan boleh menjadi satu cabaran apabila berurusan dengan nombor yang melebihi kapasiti jenis integer terbina dalam . Golang menyediakan penyelesaian yang berkuasa dengan pakej matematik/besarnya.

Menukar Rentetan Perenambelasan kepada Integer Besar

Untuk menukar rentetan perenambelasan menjadi besar.Int, gunakan kaedah SetIntString.

package main

import "math/big"

func main() {
    // Example hexadecimal string
    hexString := "0x00000000000000000000000000000000000000000000d3c21bcecceda1000000"

    // Create a new big.Int
    i := new(big.Int)

    // Convert the hexadecimal string to a big.Int
    i.SetString(hexString, 16)

    // Print the converted number
    println(i)
}
Salin selepas log masuk

Perpuluhan Pemangkasan Perwakilan

Selepas menukar rentetan perenambelasan kepada besar.Int, anda boleh memotong perwakilan perpuluhan dengan menggunakan kaedah Truncate. Contohnya:

func Truncate(x *big.Int, prec uint) {
    f := new(big.Float).SetInt(x)

    f.SetPrec(int64(prec))
    f.Int(x)
}
Salin selepas log masuk

Fungsi ini menetapkan ketepatan besar. Terapung ke bilangan tempat perpuluhan yang diingini sebelum menukarnya semula kepada besar.Int.

Contoh Penggunaan

Anda boleh menggunakan pakej fmt untuk menghuraikan dan memformat besar. Nilai Int:

package main

import "fmt"

func main() {
    hexString := "0x000000d3c21bcecceda1000000"

    // Create a new big.Int
    i := new(big.Int)

    // Parse the hexadecimal string
    fmt.Sscan(hexString, i)

    // Alternatively, you can use fmt.Sscanf
    // fmt.Sscanf(hexString, "0x%x", i)

    // Truncate to 18 decimal places
    Truncate(i, 18)

    // Marshal to JSON
    jsonBytes, _ := i.MarshalJSON()
    fmt.Println(string(jsonBytes))
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Mengendalikan Rentetan Heksadesimal Lebih Besar Daripada Jenis Integer Terbina Dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan