[]byte to string raises an error.
string([]byte[:n]) raises an error too.
By the way, for example, sha1 value to string for filename.
Does it need utf-8 or any other encoding set explicitly?
Thanks!
7 Answers
The easiest method I use to convert byte to string is:
myString := string(myBytes[:])
3 Comments
:? What's the difference between this answer and myString := string(myBytes)?: is needed because byte arrays cannot be directly turned to a string while slices can. Let's say we have var b [64]byte . string(b) will fail while string(b[:]) will work.string(byteslice) does an allocation and a copy to clone the byte slice into the string's backing storeThe easiest way to convert []byte to string in Go:
myString := string(myBytes)
Note: to convert a "sha1 value to string" like you're asking, it needs to be encoded first, since a hash is binary. The traditional encoding for SHA hashes is hex (import "encoding/hex"):
myString := hex.EncodeToString(sha1bytes)
In Go you convert a byte array (utf-8) to a string by doing string(bytes) so in your example, it should be string(byte[:n]) assuming byte is a slice of bytes.
1 Comment
I am not sure that i understand question correctly, but may be:
var ab20 [20]byte = sha1.Sum([]byte("filename.txt"))
var sx16 string = fmt.Sprintf("%x", ab20)
fmt.Print(sx16)
3 Comments
var and declare every type without just inferring them. play.golang.org/p/JUl57LKfzkhex.EncodeToString instead of fmt.Sprintf("%x", ...).First you're getting all these negatives reviews because you didn't provided any code. Second, without a good example. This is what i'd do
var Buf bytes.Buffer
Buf.Write([]byte)
myString := Buf.String()
Buf.Reset() // Reset the buffer to reuse later
or better yet
myString := string(someByteArray[:n])
see here also see @JimB's comment
That being said if you help that targets your program, please provide and example of what you've tried, the expect results, and error.
1 Comment
We can just guess what is wrong with your code because no meaningful example is provided. But first what I see that string([]byte[:n]) is not valid at all. []byte[:n] is not a valid expression because no memory allocated for the array. Since byte array could be converted to string directly I assume that you have just a syntax error.
Shortest valid is fmt.Println(string([]byte{'g', 'o'}))
[]bytecan be converted directly tostring. Please show an example of what problem you're having.