93

TCP を介したクライアント サーバーの例を作成する必要があります。クライアント側で 2 つの数字を読み取り、それらをサーバーに送信します。私が直面した問題は、通信がタイプ のデータのみを受け入れるため、から[]byteに変換できないことです。int[]byte

サーバーに変換[]byteintたりint、サーバーに送信したりする方法はありますか?

いくつかのサンプル コードは非常に高く評価されます。

ありがとう。

4

7 に答える 7

11

バイト配列から始めて、バイナリ パッケージを使用して変換を行うことができます。

たとえば、 ints を読みたい場合:

buf := bytes.NewBuffer(b) // b is []byte
myfirstint, err := binary.ReadVarint(buf)
anotherint, err := binary.ReadVarint(buf)

同じパッケージで、一般的なRead関数を使用して、必要なバイト順で unsigned int または float を読み取ることができます。

于 2012-06-25T06:53:40.300 に答える
8
now := []byte{0xFF,0xFF,0xFF,0xFF}
nowBuffer := bytes.NewReader(now)
var  nowVar uint32
binary.Read(nowBuffer,binary.BigEndian,&nowVar)
fmt.Println(nowVar)
4294967295
于 2020-08-21T08:47:24.857 に答える
6

バイト シーケンスとの間で数値をエンコード/デコードするには、encoding/binaryパッケージがあります。ドキュメントに例があります。目次の「例」セクションを参照してください。

これらのエンコーディング関数は、io.Writerインターフェイスで動作します。net.TCPConn型はio.Writer を実装しているため、ネットワーク接続に直接読み書きできます。

接続のどちらかの側に Go プログラムがある場合は、encoding/gobの使用を検討することをお勧めします。gob の使用方法については、記事「データのゴブ」を参照してください (自己完結型の例を見るには、一番下までスキップしてください)。

于 2012-06-25T07:00:24.523 に答える
-11
var bs []byte
value, _ := strconv.ParseInt(string(bs), 10, 64)
于 2015-05-07T12:28:23.777 に答える