go - Golang中如何处理字节运算符?

标签 go networking buffer packets

我想创建一个缓冲区,其中包含昵称和密码等信息。假设我创建了一个空缓冲区,即

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

到那时我想用数据填充它,比如 buffer << nickname(string) << password(string) , 所以我得到的结果是

08 75 73 65 72 6e 61 6d 65 08 70 61 73 73 77 6f 72 64

这是len.nickname actual_nickname len.password password

现在,在我创建了这样的缓冲区之后,我想将它解析为变量。 那看起来像 buffer >> nickname(string) >> password(string)

我曾经在使用运算符的 C++ 中做过一些东西,但我不确定如何在 Golang 中这样做。

这些缓冲区将用作我的网络应用程序中的数据包主体。我不想使用结构,但有点像上面那样。

我希望我能正确解释我的问题。我也不想使用像 : 这样的分离器将这些放入数组表中。

谢谢。

最佳答案

尝试使用 bytes.Buffer , 您可以根据需要写入其中,包括使用 fmt.Fprintf如有必要。当所有内容都写入缓冲区后,您可以取回字节。

buf := bytes.NewBuffer(nil)
fmt.Fprint(buf, nickname)
fmt.Fprint(buf, password)
fmt.Print(buf.Bytes())

这里的工作示例:https://play.golang.org/p/bRL6-N-3qH_n

关于go - Golang中如何处理字节运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48254021/

相关文章:

go - 如何在 Go 中创建一个 Map<String, List<SomeClass>>?

Go heap.Interface 作为一个结构

c++ - 如何禁用流缓冲?

audio - 带librosa的音频缓冲区

go - 如果您从应用程序中按 ctrl-c,是否会运行延迟的 Restore()?

go - 给定一个TCP服务器,如何获取连接域地址

Android:在应用程序中间从 3G 切换到 WIFI = 网络连接丢失

networking - IPv5哪里去了?

c - 如何使用 winpcap 修改 HTTP 响应数据包?

c - 对 'setlinebuf' 的 undefined reference