要求:我想得到“4 个字节已发送” - 当我发送以下十六进制消息时 - 我看到它们适用于一个十六进制消息,但在发送时进行微小更改时不适用于另一个十六进制消息
下面的代码更好地解释了我的问题 - 首先是按预期发送了 4 个字节的工作十六进制,第二个是发送额外字节的另一个十六进制消息 - 我也需要找出一种方法来为第二个十六进制发送 4 个字节
工作六角形:
import (
"fmt"
"os"
"encoding/hex"
)
func main() {
hexString, _ := hex.DecodeString("4214722e")
n, err := fmt.Fprintf(os.Stdout, string(hexString))
// The n and err return values from Fprintf are
// those returned by the underlying io.Writer.
if err != nil {
fmt.Fprintf(os.Stderr, "Fprintf: %v\n", err)
}
fmt.Printf("\n%d bytes written.\n", n)
fmt.Println([]byte(hexString))
fmt.Println(hex.Dump(hexString))
}
产生以下输出:
4 bytes written.
[66 20 114 46]
00000000 42 14 72 2e |B.r.|
https://play.golang.org/p/UNLsLdLk6g0
import (
"fmt"
"os"
"encoding/hex"
)
func main() {
hexString, _ := hex.DecodeString("42147225")
n, err := fmt.Fprintf(os.Stdout, string(hexString))
// The n and err return values from Fprintf are
// those returned by the underlying io.Writer.
if err != nil {
fmt.Fprintf(os.Stderr, "Fprintf: %v\n", err)
}
fmt.Printf("\n%d bytes written.\n", n)
fmt.Println([]byte(hexString))
fmt.Println(hex.Dump(hexString))
}
产生以下输出,这不是预期的,即使打印时的字节看起来是 4
13 bytes written.
[66 20 114 37]
00000000 42 14 72 25 |B.r%|
在第二个示例中需要发送 4 个字节 - 请帮我解决同样的问题
注意:为什么我在这里使用 Fprintf ?我需要通过 TCP 套接字发送此消息,但对于上面的示例 - 我发送相同的十六进制消息,但发送到标准输出,以便我们轻松查看此消息。只要该解决方案可用于向套接字发送信息 - 我真的不在乎它是 Fprintf 还是其他东西
哈士奇WWW
相关分类