I would do this using strconv.FormatUint:

import "strconv"

var u uint32 = 17
var s = strconv.FormatUint(uint64(u), 10)
// "17"

Note that the expected parameter is uint64, so you have to cast your uint32 first. There is no specific FormatUint32 function.

Answer from julienc on Stack Overflow
🌐
Microsoft Learn
learn.microsoft.com › en-us › dotnet › api › system.uint32.tostring
UInt32.ToString Method (System) | Microsoft Learn
The string representation of the value of this instance, consisting of a sequence of digits ranging from 0 to 9, without a sign or leading zeroes. The following example displays a UInt32 value by using the default ToString() method. It also ...
🌐
TutorialsPoint
tutorialspoint.com › uint32-tostring-method-in-chash-with-examples
UInt32.ToString() Method in C# with Examples
using System; public class Demo { public static void Main(){ uint val1 = 0; uint val2 = UInt32.MaxValue; Console.WriteLine("Value1 (String representation) = "+val1.ToString()); Console.WriteLine("Value2 (String representation) = "+val2.ToString()); bool res = val1.Equals(val2); Console.WriteLine("Return value (comparison) = "+res); if (res) Console.WriteLine("val1 = val2"); else Console.WriteLine("val1 != val2"); } }
🌐
Arduino Forum
forum.arduino.cc › projects › programming
uint32 to string hexadecimal - Programming - Arduino Forum
October 9, 2015 - This looks a simple question but i cannot find any code to solve it... I'm using arduino Uno and i have a uint32_t variable with a hexadecimal value. If i print it to the serial monitor i can see the right value: code: uint32_t addr; Serial.println(addr,HEX); //this outputs 40E8D0E8 as expected Now i need to store that value as a string, but cannot figure how.
🌐
GeeksforGeeks
geeksforgeeks.org › c# › uint32-tostring-method-in-c-sharp-with-examples-set-2
UInt32.ToString Method in C# with Examples | Set - 2 - GeeksforGeeks
July 11, 2025 - Return Value: This method returns the string representation of the value of this instance as specified by format. Exception: This method will give FormatException if the format parameter is invalid.
🌐
OTLand
otland.net › forums › opentibia › support › requests
[C++] How to convert an uint32_t to string. | OTLand
June 28, 2011 - Moderators or administrator of ... to the Otland's Staff. Do not get scammed! ... You are using an out of date browser. It may not display this or other websites correctly. You should upgrade or use an alternative browser. ... Well, I need this request, if someone knows this please post. <_< ... uint32_t p5 = 97; uint32_t p15 = 1613; uint32_t rath1 = random_range(p5, p15); std::stringstream ss; std::string ...
🌐
Cprogramming
cboard.cprogramming.com › c-programming › 104485-how-convert-uint32_t-string.html
How to convert uint32_t to string?
There are a couple of methods I'd suggest to do this, each of which is ugly in its own way: ... #include <stdio.h> #include <stdint.h> #include <inttypes.h> int main(void) { char str[11]; /* 11 bytes: 10 for the digits, 1 for the null character */ uint32_t n = 12345; snprintf(str, sizeof str, "%lu", (unsigned long)n); /* Method 1 */ snprintf(str, sizeof str, "%" PRIu32, n); /* Method 2 */ } The first method converts the uint32_t to an unsigned long, which is guaranteed to be large enough to hold any possible uint32_t value.
🌐
Microsoft Learn
learn.microsoft.com › en-us › dotnet › api › system.componentmodel.uint32converter
UInt32Converter Class (System.ComponentModel) | Microsoft Learn
This converter can only convert a 32-bit unsigned integer object to and from a string. The UInt32 value type represents unsigned integers with values ranging from 0 to 4,294,967,295.
🌐
Microsoft Learn
learn.microsoft.com › en-us › dotnet › api › system.uint32.parse
UInt32.Parse Method (System) | Microsoft Learn
Converts the string representation of a number in a specified style and culture-specific format to its 32-bit unsigned integer equivalent. public: static System::UInt32 Parse(System::String ^ s, System::Globalization::NumberStyles style, ...
Find elsewhere
🌐
Onbrn
web3-type-converter.onbrn.com
Web3 Type Converter - Convert from bytes32 to string
Convert from bytes32 to string, number to bytes32, and more!
🌐
Reddit
reddit.com › r/learnprogramming › how to convert uint32 to legible text?
r/learnprogramming on Reddit: How to convert UInt32 to legible text?
October 15, 2024 -

I'm a Dead Rising 3 modder, and the way the game stores strings is in UInt32 formats. This is also how the game stores its animation ID's, which don't actually seem to correlate to anything (Example, the animation "player_attack_heavymetal_heavy_spin" converted to UInt32 is "2350023456", while its actual animation ID is "950460626")

This means that if the animation isn't referenced anywhere else in the code besides the animation file itself, I can't use it. So, I've been trying to reverse engineer the strings, but I haven't gotten any luck, just getting 4 illegible characters. Does anyone have a way to help? Is it impossible?

🌐
STMicroelectronics Community
community.st.com › t5 › stm32-mcus-wireless › append-uint32-to-string-for-ble-local-name › td-p › 73053
Solved: Append uint32 to string for BLE local name - STMicroelectronics Community
January 3, 2022 - My chip id is a uint32_t Device_ID which was read from the device register (0x1FFF7580). ... Solved! Go to Solution. ... This discussion is locked. Please start a new topic to ask your question. ... The length of the resulting string can be calculated with strlen(name).
🌐
GeeksforGeeks
geeksforgeeks.org › c# › uint32-parsestring-method-in-c-sharp-with-examples
UInt32.Parse(String) Method in C# with Examples - GeeksforGeeks
July 12, 2025 - // C# program to demonstrate // UInt32.Parse(String) Method // for ArgumentNullException using System; class GFG { // Main Method public static void Main() { try { // passing null value as a input checkParse(null); } catch (ArgumentNullException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } catch (FormatException e) { Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } // Defining checkparse method public static void checkParse(string input) { // declaring UInt32 variable uint val; // getting parsed value val = UInt32.Parse(input); Console.WriteLine("'{0}' parsed as {1}", input, val); } }
🌐
Reddit
reddit.com › r/golang › convert uint to string
r/golang on Reddit: convert uint to string
November 4, 2024 -

I tried the following:

package main

import "fmt"

func main() {
	n := uint8(3)
	fmt.Println(string(n)) // prints nothing
	fmt.Println(fmt.Sprintf("%v", n))  // prints 3
}

Playground: https://go.dev/play/p/OGE5u8SuAy2

Confused why casting uint8 to string appears to do nothing. But fmt.Sprintf works.

🌐
CopyProgramming
copyprogramming.com › howto › c-convert-uint32-t-to-string-c
Converting uint32_t to String in C: Complete Guide for 2026
January 8, 2026 - snprintf() with inttypes.h macros is the recommended, portable approach for converting uint32_t to string in modern C. This method combines safety with standardization, making it the first choice for production code.
🌐
Reddit
reddit.com › r/c_programming › conversion from uint32_t to char*
r/C_Programming on Reddit: Conversion from uint32_t to char*
August 5, 2022 -

Hello,

I am wondering about a data conversion from uint32_t to char*.

There is a 32-bit register: *(UID_REG_ADDRESS) This register stores 4 ASCII characters.

Now I am wondering what is the safest solution to print it:

typedef union
{
    uint32_t u;
    char c[sizeof(uint32_t)];
} conv_t; // maybe it should be packed

...

conv_t data = { .u = *(UID_REG_ADDRESS) };
printf("%.4s\n", data.u);

or like that:

printf("%.4s\n", (char*)UID_REG_ADDRESS);

The first one seems to be safe, however the second looks more readable (and produces less code). Both of them work well on my machine, but I wonder how it would be on another platform. For example: would it be possible that next characters are read with the different offset (32 bits)?

At first I tought that the shorter code will not work.

🌐
GitHub
gist.github.com › chiro-hiro › ee336cacf8e76635de821fa38b1bf526
Unsigned 32 bits IP address to string · GitHub
Unsigned 32 bits IP address to string. GitHub Gist: instantly share code, notes, and snippets.
🌐
Cryptii
cryptii.com › pipes › integer-converter
Integer converter: Translate between 8, 16 and 32-bit ints - cryptii
In computer science, an integer is a data type that represents mathematical integers. They may be of different sizes and may or may not be allowed to contain negative values. In a computer they are commonly represented as a group of binary digits.
Top answer
1 of 2
2

Your code with sendBinary is probably fine, as long as on the other side you also use a function that expects to receive exactly 32 bits of binary data (in little-endian format).

Trying to print (char*)&some_32bit_int on the other hand will not do anything useful.

The short version is this:

  • if you want to send (or receive) binary data, use functions made for binary data - they will usually take a pointer to char (or uint8_t or something like that) and a length.
  • if you want to send (or receive) strings, use functions meant for strings. They'll sometimes take String, or std::string or, unfortunately perhaps, char * for C strings.

Never mix both.

Functions that expect a (C) string expect it to actually be a C string, i.e. a sequence of chars ending with a null byte (0x00). The chars are expected to be mostly ASCII printable characters. If you give them just plain raw data like the memory address of an int, you won't get what you want.

Trying to print raw data using a function that expects a C string will result in garbage (or nothing at all, or a lot more garbage than you expected!). (Details in the second part.)

If you want to format your data into a string for sending (using a string/text protocol), then use functions like sprintf to do the conversion. (Or use a library that does JSON if your receiver is a web thing - that's pretty handy.)

e.g.

char buffer[32];
sprintf(buffer, "{data:%d}", payload);

Then send buffer via a function that expects a C string.


Consider this:

uint32_t payload = 0x00323130;

The first line initializes a 32 bit int to a specific value, 0x00323130 in hex. Now let's assume that payload was stored in memory at address 0x0100. The memory after that assignment would look like this:

Addr.  Val
0x0100 0x30  // our same number 0x00323130 stored in little-endian format
0x0101 0x31
0x0102 0x32
0x0103 0x00

When you do:

client.sendBinary(&payload, 4);

Those four bytes get send over the wire (or the air) exactly as they are. Nothing more, nothing less. If that's what the receiver expects you're golden.

Now if you do:

Serial.println((char *) &payload);

Serial.println is an overloaded function. When you give it a char *, it expects a C-string, which is a series of characters terminated by a "null byte", i.e. a byte value of zero. Serial.println will then look at the first byte pointed to by the argument. If it's zero, it stops. Otherwise it outputs that char to the serial line, and moves on to the next character. Repeat until a zero byte is found.

In the specially crafted case here with that specific value of payload, Serial.println would receive address 0x0100 and:

  • Look at the value at 0x0100, get 0x30, check that it's not zero, and pass it on to the serial line. Serial monitor would receive 0x30 and display that. By lucky coincidence this is the ASCII character code for the digit "0".
  • Look at the value at 0x0101, get 0x31, check that it's not zero, and pass it on to the serial line. Serial monitor would receive 0x31 and display that. By lucky coincidence this is the ASCII character code for the digit "1".
  • Look at the value at 0x0102, get 0x32, ... serial monitor displays "2".
  • Loot at the value at 0x0103, get 0x00. That is a null byte, so it stops there, and sends a newline sequence to the serial.

So in this fabricated scenario the output on the serial monitor would be "123".

Try it with payload = 0x00616263; - serial monitor will display "cba".

In short, Serial.println will output exactly the bytes it finds in memory to the serial, until it encounters a zero byte. The serial monitor will try to display those bytes. But, unless you've crafted those values very carefully, all you'll get out of it is garbage - relatively few 8bit values map to printable characters, and even when they do they won't "look" anything like the raw data you had.

If your number happens to start with a zero byte in its binary little-endian representation, Serial.println won't print anything - like if you had given it an empty string.

If your number doesn't contain a zero byte, it will keep on reading memory past the storage allocated for payload until it finds one - possibly outputing much more "junk" than a 32bit variable could ever contain.

2 of 2
2

The sending with client.sendBinary((char *)&payload, sizeof(payload)); is OK.

Your attempts to print binary data are wrong.

A print() of the 4 bytes of uint32_t as char array will print 4 characters which ASCII codes are in those 4 bytes and then continue print characters from memory after the variable, until a byte with 0 is read. Some of the characters can be a not printable terminal control characters.

A Serial.write((char *)&payload, sizeof(payload)); will print 4 characters which ASCII codes are in those 4 bytes.

The simplest way to visualize your binary payload is Serial.println(payload, BIN);. This will print the uint32_t value in binary.