要求:我想发送“ 4个字节”-当我发送以下十六进制消息时-我看到它们在处理一个十六进制消息时起作用,而在进行较小的更改后不能用于另一个十六进制消息
以下代码更好地解释了我的问题-首先按预期方式发送了4个字节的工作十六进制,其次发送了额外字节的另一个hex消息-我需要找出一种方法也可以为第二个十六进制发送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.|
不工作的十六进制-仅更改了一个值:(这里需要4个字节,但是我得到了13个)
https://play.golang.org/p/UNLsLdLk6g0
import (
"fmt"
"os"
"encoding/hex"
)
func main() {
hexString,_ := hex.DecodeString("42147225")
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套接字发送此消息,但是对于上面的示例-我将相同的十六进制消息发送给stdout,以便我们轻松查看。只要该解决方案可用于向套接字发送信息-我真的不关心它的Fprintf还是其他