質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

1回答

1380閲覧

【Go】2つのbytes.Bufferを連結したい

kamuycikap

総合スコア135

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2021/12/22 09:10

やりたかったこと。
1.複数の構造体をバイナリ化
2.バイナリ化した複数の構造体データを、一本のバイナリデータに加工
※先頭構造体データのお尻に繋げるだけ。

ひねり出した解決策かも?なアイデア。
1.構造体をバイナリデータ(byteのスライス)にしたい。※複数
2.byteスライスにした複数のデータを、連結して一本のbyteスライスにしたい

以下、試行錯誤した結果。。。
構造体データを、複数のbytes.bufferにすることには成功。
最後、複数のbytes.bufferを連結したいがやりかたがわからず。。。

go

1type A struct { 2 Int32Field int32 3 ByteField byte 4}

この構造体定義で、構造体を2つ作成

go

1 // 構造体つくる 2 a := A{ 3 Int32Field: 0x123456, 4 ByteField: 0xFF, 5 } 6 7 b := A{ 8 Int32Field: 0x987654, 9 ByteField: 0xDA, 10 }

go

1 // 構造体Aをbyteスライスに 2 getbin_a := new(bytes.Buffer) 3 binary.Write(getbin_a, binary.LittleEndian, &a) 4 fmt.Printf("\ngetbin_a:%v",getbin_a) 5 6 // 構造体Bをbyteスライスに 7 getbin_b := new(bytes.Buffer) 8 binary.Write(getbin_b, binary.LittleEndian, &b) 9 fmt.Printf("\ngetbin_b:%v",getbin_b) 10

ここまで出来ているつもりで・・・なんとかしてgetbin_aとgetbin_bを繋げたいのです。

やりたい事に対してこの方法が正しいのかもわかりませんが、最終的に構造体データを連結したバイナリデータができればOK。

やり方をご存じの方、是非ご教示ねがいたく。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

bytes.Bufferは追記ができるオブジェクトなので、
AオブジェクトもBオブジェクトも同じbytes.Bufferへの追記を行えば連結した結果が得られます。

https://go.dev/play/p/IKIOBB5ovcX

go

1package main 2 3import ( 4 "bytes" 5 "encoding/binary" 6 "fmt" 7) 8 9type A struct { 10 Int32Field int32 11 ByteField byte 12} 13 14func main() { 15 a := A{ 16 Int32Field: 0x123456, 17 ByteField: 0xFF, 18 } 19 20 b := A{ 21 Int32Field: 0x987654, 22 ByteField: 0xDA, 23 } 24 getbin := new(bytes.Buffer) 25 binary.Write(getbin, binary.LittleEndian, &a) 26 binary.Write(getbin, binary.LittleEndian, &b) 27 fmt.Printf("%X", getbin.Bytes()) 28}

投稿2021/12/22 11:58

nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamuycikap

2021/12/23 02:08

的確な回答をありがとうござます。 バイナリデータを無事に連結できるようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問