TCPを介してクライアントサーバーの例を作成する必要があります。クライアント側で2つの数値を読み取り、それらをサーバーに送信します。私が直面した問題は、通信が[]byte
型のデータのみを受け入れるため、[]byte
からint
に変換できないことです。
[]byte
をint
に変換する方法はありますか、またはint
をサーバーに送信できますか?
いくつかのサンプルコードは本当にありがたいです。
ありがとう。
バイト配列から開始して、変換を行うために binary package を使用できます。
たとえば、intを読みたい場合:
buf := bytes.NewBuffer(b) // b is []byte
myfirstint, err := binary.ReadVarint(buf)
anotherint, err := binary.ReadVarint(buf)
同じパッケージでは、一般的な Read 関数を使用して、必要なバイト順序でunsigned intまたはfloatを読み取ることができます。
バイトシーケンスとの間で数値をエンコード/デコードするには、 encoding/binary パッケージがあります。ドキュメントには例があります。目次の「例」セクションを参照してください。
これらのエンコード関数は io.Writer インターフェイスで動作します。 net.TCPConn タイプはio.Writerを実装するため、ネットワーク接続への直接の書き込み/読み取りが可能です。
接続の両側にGoプログラムがある場合は、 encoding/gob の使用を検討することをお勧めします。 gobの使用方法については、記事「 Gobs of data 」を参照してください(自己完結型の例を見るには、下にスキップしてください)。
[] byteがASCIIバイト数)の場合、最初に[] byteを文字列に変換し、文字列をintに変換するstrconv
package Atoi
メソッドを使用します。
package main
import (
"fmt"
"strconv"
)
func main() {
byteNumber := []byte("14")
byteToInt, _ := strconv.Atoi(string(byteNumber))
fmt.Println(byteToInt)
}