strconv.FormatInt în Go

Transformă un întreg în text, în baza dorită (2–36): binar, octal, zecimal, hexazecimal.

Sintaxă
func FormatInt(i int64, base int) string
func FormatUint(i uint64, base int) string

Ce face strconv.FormatInt

strconv.FormatInt(i, base) scrie numărul i ca text în baza base, între 2 și 36. Pentru cifrele peste 9 se folosesc literele mici a–z. FormatUint face la fel pentru numere fără semn.

Primește int64, deci un int obișnuit trebuie convertit: strconv.FormatInt(int64(n), 2). Pentru baza 10 și tipul int, strconv.Itoa este mai scurt.

Parametri

Parametru Descriere
i Numărul.
base Baza, între 2 și 36. Altă valoare produce panic.

Ce returnează

Textul numărului, fără prefix (0x, 0b).

Exemple

Exemplul 1: Același număr în mai multe baze

package main

import (
	"fmt"
	"strconv"
)

func main() {
	n := 2026
	for _, baza := range []int{2, 8, 10, 16, 36} {
		fmt.Printf("baza %2d: %s\n", baza, strconv.FormatInt(int64(n), baza))
	}
	fmt.Println(strconv.FormatInt(-255, 16))
	fmt.Println(strconv.FormatUint(18446744073709551615, 10))
}

Rezultat

baza  2: 11111101010
baza  8: 3752
baza 10: 2026
baza 16: 7ea
baza 36: 1ka
-ff
18446744073709551615

Greșeli frecvente

  • Dai un int direct: FormatInt(n, 2) nu compilează. Scrie FormatInt(int64(n), 2).
  • Te aștepți la prefix (0xff) sau litere mari (FF). Pentru acestea folosește fmt.Sprintf("%#x", n) sau "%X".

Comenzi înrudite

  • strconv.Atoi: Atoi transformă un text în număr întreg (int) și returnează eroare dacă nu se poate; Itoa face invers.
  • strconv.ParseInt: Citește un întreg dintr-un text, în orice bază (2–36) și verifică dacă încape într-un anumit număr de biți.
  • strconv.AppendInt: Adaugă un număr sau un bool, scris ca text, la sfârșitul unui []byte, fără să creeze un text intermediar.
  • fmt.Printf: Afișează text formatat cu %d, %s, %.2f etc.; Sprintf returnează textul, Fprintf îl scrie într-un fișier sau alt Writer.