但是必須注意的是 []byte 並不一定是以 0x00 結束,如果就直接轉型到string,而直接使用strings的一些函式。“有時”就會造成不可預期的結果。像是我要從socket讀取資料,先建立了一個BUF_SIZE的[]byte array,這個大小是2M Bytes。
read_buf := make([]byte, BUF_SIZE)
byte_count, err := conn.Read(read_buf)
log.Println("Receive ", byte_count, " bytes\n", string(read_buf))
跑到Println的時候,發現而且ssh連線幾乎沒有反應。找了又找,後來發現到是Println花很久的時間。我才意會到,原來golang還是要處理結束字元。所以[]byte轉換string的時候,必須要知道byte的長度。因此Println改成下面代碼就解決了問題log.Println("Receive ", byte_count, " bytes\n", string(read_buf[:byte_count]))
沒有留言:
張貼留言