0

[]byte数値を 16 進数に変換し、結果を長さ 4 まで格納したいと考えています。

package main

import (
    "encoding/hex"
    "fmt"
)

func main() {

    hexstring := fmt.Sprintf("%x", 12345678)
    fmt.Println(hexstring)
    hexbytes, _ := hex.DecodeString(hexstring)
    for {
        if len(hexbytes) >= 4 {
            break
        }
        hexbytes = append(hexbytes, 0)
    }
    fmt.Println(hexbytes)
}

make([]byte, 4)パッケージを使用してこれを行うより良い方法があるに違いないと思いますがencoding/binary、それを機能させることができませんでした。

サンドボックス リンク: http://play.golang.org/p/IDXCatYQXY

4

1 に答える 1

2

私があなたの質問を誤解していない限り、それは実際には hex に関するものではありません。32 ビット整数を取り、それを 4 バイトとして扱い、それらのバイトを[]byte.

このために、パッケージからByteOrderタイプ (実際には、そのサブタイプLittleEndianBigEndian) が必要です。encoding/binaryこのようなもの:

package main

import (
"fmt"
"encoding/binary"
)

func main() {

    x := 12345678
    b := [4]byte{}
    binary.LittleEndian.PutUint32(b[:], uint32(x))
    fmt.Println(b)
}
于 2012-06-13T12:58:15.213 に答える