Golang strconv.FormatUint
last modified April 20, 2025
This tutorial explains how to use the strconv.FormatUint
function in Go.
We'll cover unsigned integer-to-string conversion basics with practical examples.
The strconv.FormatUint function converts an unsigned integer to a string. It provides flexible formatting options including different number bases.
FormatUint returns the string representation of an unsigned integer in a given base.
The base must be between 2 and 36. For base 10, it's similar to fmt.Sprintf
.
Basic strconv.FormatUint Example
The simplest use of strconv.FormatUint
converts an unsigned integer to
a base 10 string. Here we demonstrate basic conversion.
package main import ( "fmt" "strconv" ) func main() { num := uint64(42) str := strconv.FormatUint(num, 10) fmt.Printf("Unsigned integer %d converted to string '%s'\n", num, str) }
We convert the unsigned integer 42 to a base 10 string. The function returns the string representation without any error possibility.
Converting to Different Bases
strconv.FormatUint
supports conversion to various bases. This example
shows hexadecimal, binary, and octal conversions.
package main import ( "fmt" "strconv" ) func main() { num := uint64(255) fmt.Println("Base 10:", strconv.FormatUint(num, 10)) fmt.Println("Hexadecimal:", strconv.FormatUint(num, 16)) fmt.Println("Binary:", strconv.FormatUint(num, 2)) fmt.Println("Octal:", strconv.FormatUint(num, 8)) }
We convert the same number to different string representations. The base parameter determines the numeric system used for conversion.
Formatting Large Numbers
FormatUint
can handle very large unsigned integers. This example
demonstrates conversion of maximum uint64 values.
package main import ( "fmt" "math" "strconv" ) func main() { maxUint64 := uint64(math.MaxUint64) str := strconv.FormatUint(maxUint64, 10) fmt.Printf("Maximum uint64 value: %d\n", maxUint64) fmt.Printf("As string: %s\n", str) fmt.Println("Length:", len(str)) }
We convert the maximum uint64 value to a string. The function handles the full range of uint64 values without any issues.
Performance Comparison
This example compares FormatUint
with fmt.Sprintf
for
unsigned integer formatting.
package main import ( "fmt" "strconv" "time" ) func main() { const iterations = 1000000 num := uint64(123456789) // Benchmark FormatUint start := time.Now() for i := 0; i < iterations; i++ { strconv.FormatUint(num, 10) } fmt.Println("FormatUint duration:", time.Since(start)) // Benchmark fmt.Sprintf start = time.Now() for i := 0; i < iterations; i++ { fmt.Sprintf("%d", num) } fmt.Println("Sprintf duration:", time.Since(start)) }
FormatUint
is generally faster than fmt.Sprintf
for
simple unsigned integer conversions. The difference matters in performance-critical code.
Custom Number Formatting
This example shows how to create custom number formatting using FormatUint
with additional string manipulation.
package main import ( "fmt" "strconv" "strings" ) func formatWithCommas(num uint64) string { str := strconv.FormatUint(num, 10) var parts []string for i := len(str); i > 0; i -= 3 { start := i - 3 if start < 0 { start = 0 } parts = append([]string{str[start:i]}, parts...) } return strings.Join(parts, ",") } func main() { num := uint64(1234567890) fmt.Println("Formatted with commas:", formatWithCommas(num)) }
We convert the number to a string then add comma separators. This demonstrates
how FormatUint
can be part of more complex formatting solutions.
Hexadecimal with Prefix
This example shows how to create hexadecimal strings with the "0x" prefix using
FormatUint
.
package main import ( "fmt" "strconv" ) func main() { num := uint64(255) hexStr := "0x" + strconv.FormatUint(num, 16) fmt.Println("Hexadecimal with prefix:", hexStr) // Uppercase hexadecimal upperHex := "0X" + strconv.FormatUint(num, 16) fmt.Println("Uppercase hexadecimal:", upperHex) }
We concatenate the "0x" prefix with the hexadecimal string. For uppercase letters, we can use "0X" prefix instead.
Practical Example: File Permissions
This practical example demonstrates using FormatUint
to convert Unix
file permissions to octal strings.
package main import ( "fmt" "strconv" ) func main() { permissions := uint64(0644) // Common file permission permStr := strconv.FormatUint(permissions, 8) fmt.Printf("Permissions: %s (octal)\n", permStr) fmt.Printf("Equivalent to: -rw-r--r--\n") // Convert back to verify parsed, _ := strconv.ParseUint(permStr, 8, 64) fmt.Printf("Parsed back: %#o\n", parsed) }
We convert file permissions to an octal string. The example shows how this can be useful in system programming contexts.
Source
Go strconv package documentation
This tutorial covered the strconv.FormatUint
function in Go with
practical examples of unsigned integer-to-string conversion in various scenarios.
Author
List all Go tutorials.