long型のデータを配列を使って1byte毎に分けたい処理を作りたいのですが、
やりかたとしてはlong型のアドレスをポインタ変数に渡して、
ポインタ変数をバイト配列に代入する方法になりますでしょうか?
具体的なプログラムはこんな感じと考えてますが
unsigned long LONG:
unsigned char AAA[8], *pon, i:
pon = &LONG
for(i=0 i<8 i++)
{
AAA[i] = *pon + i;
}
C言語に詳しい方教えてください、よろしくお願いします。
No.4
- 回答日時:
「longは4バイト」などという出鱈目を書くのはいかがなものか>#3. あと, エンディアンを意識しなければならないがゆえに, こ
の文章ではどうすべきかわからない. 「1byte毎に分けたい」というのはいいとして, その各バイトはどのように並んでいてほしい?No.5ベストアンサー
- 回答日時:
バイトオーダーを無視してよいのであれば...
memcpy(AAA, &LONG, sizeof(LONG));
とするのが基本です。
以下のように、共用体を使う方法もありますが、任意のバイト配列に格納するにはさらにコピーが必要になります。
union U
{
unsigned long LONG;
unsigned char AAA[sizeof(unsigned LONG)];
} u;
u.LONG = 値;
もし、ビッグエンディアンとして扱いたいのであれば次のようにします。
for (std::size_t i = 0; i < sizeof(LONG); i++)
AAA[i] = LONG >> (CHAR_BIT * (sizeof(LONG) - 1 - i));
リトルエンディアンとして扱うなら次のようにしてください。
for (std::size_t i = 0; i < sizeof(LONG); i++)
AAA[i] = LONG >> (CHAR_BIT * i);
ちなみに、unsigned char型は必ず1バイトですが、ビット数は8ビットとは限りませんので、必ずCHAR_BITを使う必要があります。
また、unsigned long型が何バイトなのかも処理系定義です。
32ビット以下の多くの処理系や64ビットWindowsではunsigned long型は32ビットですが、多くの64ビットの処理系ではunsigned long型は64ビットです。
また、char型が16ビットや32ビットや64ビットの処理系も実在しますので、その場合はunsigend long型が2バイトや1バイトになることもあります。
一部のDSPではunsigned long型が48ビットで6バイトというものも存在します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
int型の内容をbyteの配列にコピー
Java
-
byte[] を long,float とかに変換したい
Java
-
char*を初期化したいのですが
C言語・C++・C#
-
-
4
型変換
C言語・C++・C#
-
5
構文エラー;"が型の前にありませんとは、どうしたら解決できるのですか。"
C言語・C++・C#
-
6
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
7
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
8
配列をnビットシフトする
C言語・C++・C#
-
9
C#でbyte配列から画像を表示させたい
C言語・C++・C#
-
10
IOException ってどういうときに起こるのでしょうか?
Java
-
11
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
12
unsigned long long 型のフォーマット指定子
C言語・C++・C#
-
13
C言語でunsigned char配列を連結する方法ってありますか?
C言語・C++・C#
-
14
0xffffとは?
C言語・C++・C#
-
15
バッファとは何ですか
C言語・C++・C#
-
16
unsigned char配列への入力の仕方
C言語・C++・C#
-
17
10進数を4桁のバイト配列に格納する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Integer変数をカラにしたいので...
-
VB6変数の宣言dim j,k,p,m,n as...
-
VBAのプログラムで、DIAG = 1# ...
-
C++ 構造体の一括初期化 {0}
-
VBAで符号無し整数
-
VBAにてcolorindexを変数に格納...
-
charとucharの違い
-
long型のデータをバイト型の配...
-
C言語 構造体の中に共用体を定...
-
C++ メンバイニシャライザリス...
-
構造体の初期化方法について
-
typedefをプログラム中で解除す...
-
構造体にする理由・利点・使用例
-
構造体のメンバ初期化について
-
FILE構造体がどのように定...
-
「#undef」と「#define」の使い...
-
winsockのsendtoで送れるデータ型
-
整数から16進数への変換 現在c...
-
VBAの変数のデータ型を変更する...
-
C言語 配列の長さの上限
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
C++ 構造体の一括初期化 {0}
-
long型のデータをバイト型の配...
-
「#undef」と「#define」の使い...
-
構造体のデータを丸ごとコピー...
-
VBAにてcolorindexを変数に格納...
-
C言語 構造体の中に共用体を定...
-
値が代入されてない時
-
異なる構造体のデータのコピー
-
typedefをプログラム中で解除す...
-
構造体のポインタにNULLが入らない
-
charとucharの違い
-
整数から16進数への変換 現在c...
-
VBAの変数のデータ型を変更する...
-
VB.NETのStructureというのはど...
-
構造体を型の異なる構造体に代入
-
日付チェック関数について
-
ユーザー定義型変数の一括初期化
-
構造体の初期化方法について
おすすめ情報