掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
int型の空白部に0を代入するには? (ID:50347)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> intで宣言した変数(例えばOx0000000000001001)を、セーブデータファイルに保存するために WriteFile で まず何が問題になっているかを考えなければなりません。 例えば、 (1) そのWriteFileがそのような動作(0 がすべて切り捨て)をするから問題になっている。 (2) コ〜ディング上での数値表現(例えば0x00001001)と、メモリ上での数値表現の違いをチェックしていない。 (1)について考えます。 その私製関数と思われるWriteFileが「正しく動作しているか」を確認します。 メモリの内容を媒体に書き込む関数と思われますので、書き込まれるべき内容を確認してください。 PC/AT互換機用VC++6の場合、プログラム実行していて、停止状態になっているならメモリの内容を表示できます。(デフォルトではAlt+6で表示) (2)について考えます。 簡単の為に、例示します。(念のためにビルド対象がPC/AT互換機用のWin32アプリであると仮定します。) int v = 0x12345678; この場合、vはメモリ上でどのように表現されるのでしょうか。 (A) 12 34 56 78 (B) 78 56 34 12 Intel x86系CPU(Pentiumも含みます)やその互換CPUを使っているなら、答えは(B)です。 詳しくは知りませんが、(A)になるような環境も世の中にはあります。 (A)で表現される方法をビッグエンディアンと言い、 (B)で表現される方法をリトルエンディアンと言います。 このような違いがあるので環境によってトラブルを招くこともありますが、 Linuxアプリのコ〜ドを見ているとエンディアン切り替えに対応したコ〜ディングをよく見かけます。 (余談ですが、知りうる限りIP・TCP・UDP・DNSプロトコルでの数値表現はビッグエンディアンが用いられています。)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.