First let’s consider how to convert a byte to a string? Simple, the language specification tells us, just do it like
string(the_byte). But there is a secret here, see the following code:
Guess what you get? The result is:
Suprizing, huh! The result for
c280! If you change the modifier in fmt from
%q, you can see more clearly:
When converting a byte to a string using
string(the_byte), the result is an encoded one. So you get
string(0x80). It applies to not only byte, but all integer types.
This isn’t the case we see in C or C++. So, how do we get string
"\0x80" form byte
0x80. You will have to do it with byte slice:
Another way to do is using
bytes.Buffer is very efficient, according to the benchmark, it is the faster way to concatenate a string, better than slice appending and operator ‘+’.