TCP を介したクライアント サーバーの例を作成する必要があります。クライアント側で 2 つの数字を読み取り、それらをサーバーに送信します。私が直面した問題は、通信がタイプ のデータのみを受け入れるため、から[]byte
に変換できないことです。int
[]byte
サーバーに変換[]byte
しint
たりint
、サーバーに送信したりする方法はありますか?
いくつかのサンプル コードは非常に高く評価されます。
ありがとう。
TCP を介したクライアント サーバーの例を作成する必要があります。クライアント側で 2 つの数字を読み取り、それらをサーバーに送信します。私が直面した問題は、通信がタイプ のデータのみを受け入れるため、から[]byte
に変換できないことです。int
[]byte
サーバーに変換[]byte
しint
たりint
、サーバーに送信したりする方法はありますか?
いくつかのサンプル コードは非常に高く評価されます。
ありがとう。
バイト配列から始めて、バイナリ パッケージを使用して変換を行うことができます。
たとえば、 ints を読みたい場合:
buf := bytes.NewBuffer(b) // b is []byte
myfirstint, err := binary.ReadVarint(buf)
anotherint, err := binary.ReadVarint(buf)
同じパッケージで、一般的なRead関数を使用して、必要なバイト順で unsigned int または float を読み取ることができます。
now := []byte{0xFF,0xFF,0xFF,0xFF}
nowBuffer := bytes.NewReader(now)
var nowVar uint32
binary.Read(nowBuffer,binary.BigEndian,&nowVar)
fmt.Println(nowVar)
4294967295
バイト シーケンスとの間で数値をエンコード/デコードするには、encoding/binaryパッケージがあります。ドキュメントに例があります。目次の「例」セクションを参照してください。
これらのエンコーディング関数は、io.Writerインターフェイスで動作します。net.TCPConn型はio.Writer を実装しているため、ネットワーク接続に直接読み書きできます。
接続のどちらかの側に Go プログラムがある場合は、encoding/gobの使用を検討することをお勧めします。gob の使用方法については、記事「データのゴブ」を参照してください (自己完結型の例を見るには、一番下までスキップしてください)。
var bs []byte
value, _ := strconv.ParseInt(string(bs), 10, 64)