Q&A
解決済
3回答
2924閲覧
総合スコア1
C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。
配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。
0グッド
0クリップ
投稿2022/06/07 03:20
0
1バイトずつ配列に格納した8バイトの整数(16進数)の値を2バイト、2バイト、4バイトでそれぞれ別の変数に格納するということは出来るのでしょうか?出来るのでしたら、教えていただきたいです。 言語はC++です。 コードなども具体的に教えて頂けると嬉しいです。よろしくおお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
質問へのコメント
回答3件
C++1#include <iostream> 2#include <cstdint> 3 4struct f224_ { 5 uint16_t zero; 6 uint16_t one; 7 uint32_t two; 8}; 9 10union fields { 11 uint64_t raw; 12 f224_ f224; 13}; 14 15int main() { 16 uint64_t input = 0x0123456789abcdefULL; 17 fields f; f.raw = input; 18 std::cout << std::hex << f.f224.zero << std::endl; 19 std::cout << std::hex << f.f224.one << std::endl; 20 std::cout << std::hex << f.f224.two << std::endl; 21}
C++
1#include <iostream> 2#include <cstdint> 3 4struct f224_ { 5 uint16_t zero; 6 uint16_t one; 7 uint32_t two; 8}; 9 10union fields { 11 uint64_t raw; 12 f224_ f224; 13}; 14 15int main() { 16 uint64_t input = 0x0123456789abcdefULL; 17 fields f; f.raw = input; 18 std::cout << std::hex << f.f224.zero << std::endl; 19 std::cout << std::hex << f.f224.one << std::endl; 20 std::cout << std::hex << f.f224.two << std::endl; 21}
投稿2022/06/07 03:53
総合スコア16612
ベストアンサー
こういう感じのことを(所望のバイトオーダで)すればよいのではないでしょうか.
C++1uint8_t UB[2] = { 0x3F, 0xA5 }; //1byteが2つ 2uint16_t US = (UB[0]<<8) | UB[1]; //2byte1個にする 3 4std::cout << std::hex << US << std::endl;
1uint8_t UB[2] = { 0x3F, 0xA5 }; //1byteが2つ 2uint16_t US = (UB[0]<<8) | UB[1]; //2byte1個にする 3 4std::cout << std::hex << US << std::endl;
投稿2022/06/07 03:49
総合スコア12386
short x=bf[0]|(bf[1]<<8); int y=bf[0]|(bf[1]<<8)|(bf[2]<<16)|(bf[3]<<24);
などで。
投稿2022/06/07 03:48
総合スコア88204
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
1バイトずつ値を格納した配列のデータを複数バイトずつ変数に代入したいです。