• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC++2010 大きい桁数をBYTE型配列に代入)

VC++2010: BYTE型配列に大きい桁数を代入する方法

このQ&Aのポイント
  • VC++2010で大きな桁数の数値をBYTE型の配列に代入する方法について質問です。具体的なプログラムの方法がわからず困っています。
  • 質問者は、例えば18000などの大きな10進数をBYTE型の配列に代入する方法を知りたいという問題に直面しています。
  • 質問者は最大値が16777216の大きな桁数を持つ数値を三つのBYTE型変数に分割して代入する方法を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ビット演算とマスク演算を組み合わせる。 値をvalueとすると、たとえば int v=value-1; // 1≦value≦16777216に限る unsigned byte b1, b2, b3; b1=v>>16; b2=(v>>8)&0xff; b3=v&0xff;

hanyu-yuugo
質問者

お礼

上記の通りにすると無事なりました。今回は誠にありがとうございます 数ある中からこの人をベストアンサに決定させていただきました

その他の回答 (2)

回答No.3

「大きい数」に対する演算がきちんとできるということだと思いますので、 int a = 18000; BYTE bValue1 = a / 0x10000; a %= 0x10000; BYTE bValue2 = a / 0x100; a %= 0x100; BYTE bValue3 = a; で、できるような気がしますが。 また、これは、十六進数の区切りを基準にしたものですが、10進数ベースで、 BYTE bValue1 = a / 10000; a %= 10000; BYTE bValue2 = a / 100; a %= 100; BYTE bValue3 = a; として、それじれ 0 - 99 の範囲で格納するという処理も、要求に合致すれば、問題はないです。

hanyu-yuugo
質問者

お礼

上記の通りにすると無事なりました。ありがとうございます

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>例:16777216を三つのBYTE型変数にいれると。。。 >BYTE bValue1 = 255; >BYTE bValue2 = 255; >BYTE bValue3 = 255; 16777216を16進数表記にすると、0x1000000です。 ので3バイトには収まらないと思われますが、その辺はどうなんでしょう? 16777215(0xFFFFFF)の間違いですか? 0x123456を格納する場合は、bValue1~bValue3はそれぞれどんな値になるように格納したいのでしょうか? # ビット演算で入れられるとは思いますけどね……。 bValue1 = 0x12 bValue2 = 0x34 bValue3 = 0x56 としたいのであれば、 bValue1 = (BYTE)((0x123456 >> 16) & 0x000000FF); bValue2 = (BYTE)((0x123456 >> 8) & 0x000000FF); bValue3 = (BYTE)(0x123456 & 0x000000FF); って感じでしょうか……。

hanyu-yuugo
質問者

お礼

ご回答誠にありがとうございます。 16777215の間違いでした。 上記の通りにすると無事なりました。ありがとうございます

関連するQ&A