2016-11-16 41 views
-5

[]字節轉換爲字符串錯誤。 字符串([] byte [:n])也出錯。順便說一句,例如,sha1的值爲字符串的文件名。 它需要utf-8?或其他什麼? 謝謝。golang - 將[]字節轉換爲字符串錯誤

+3

'[] byte'可以直接轉換爲'string'。請舉例說明你有什麼問題。 – JimB

+0

例如。文件散列值到文件名字符串 –

+0

如果您只是向我們展示了您嘗試的一個示例,那麼這將是一個非常容易回答的問題,而不是等待我們猜測正確的答案。 – JimB

回答

1

在轉到您在您的例子做string(bytes)所以轉換爲字節數組(UTF-8)爲一個字符串,它應該是string(byte[:n])假設byte是字節的片。

+0

我剛剛嘗試這樣,但失敗了。事實上,我需要將文件sha1值轉換爲字符串,名稱爲文件名 –

+0

工作 - 05.01.2018 – JohannaNoobie

0

首先你得到所有這些否定評論,因爲你沒有提供任何代碼。其次,沒有一個好的例子。這就是我要的

var Buf bytes.Buffer 
Buf.Write([]byte) 
myString := Buf.String() 
Buf.Reset() // Reset the buffer to reuse later 

或更好,但

myString := string(someByteArray[:n]) 

看到here也看到@ JimB的評論

話雖這麼說,如果你幫助那些針對你的程序,請提供與實例你嘗試過的,預期的結果和錯誤。

+0

非常感謝。 EncodeToString返回src.it的十六進制編碼,效果很好。 –

2

我不知道我理解正確的問題,但可能是:

var ab20 [20]byte = sha1.Sum([]byte("filename.txt")) 
var sx16 string = fmt.Sprintf("%x", ab20) 
fmt.Print(sx16) 

https://play.golang.org/p/haChjjsH0-

+1

儘管技術上正確,但在Go中使用'var'並聲明每種類型而不推斷它們是非常不尋常的。 https://play.golang.org/p/JUl57LKfzk – JimB

+0

啊! 「%X」!這就是我做錯了! :)我正在使用錯誤的Sprintf佔位符,呃... –

4

我用byte轉換爲string最簡單的方法是:

myString := string(myBytes[:])

+0

這一個適合我,似乎是最簡單的 – Matthias