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
Patricia Arquetteasal
2024-12-15 18:08:09695semak imbas

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)
}

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)
}

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))
}

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!

Kenyataan:
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