回答編集履歴

2

追記

2022/01/06 01:23

投稿

int32_t
int32_t

スコア20909

test CHANGED
@@ -15,3 +15,25 @@
15
15
  ```
16
16
 
17
17
  のようにします。
18
+
19
+
20
+
21
+ ----
22
+
23
+
24
+
25
+ 更新された質問文のコードに関して:
26
+
27
+
28
+
29
+ ```cpp
30
+
31
+ uint32_t header[128 / sizeof(uint32_t)] = { 0 };
32
+
33
+ fread(header, sizeof(uint32_t), 128 / sizeof(uint32_t), file);
34
+
35
+ printf(" ああああ %" PRIu32 "\n", header[3]);
36
+
37
+ ```
38
+
39
+ でしょう。`DWORD` は32bit整数です。`unsigned long` は環境によって64bitの可能性があります。

1

追記

2022/01/06 01:23

投稿

int32_t
int32_t

スコア20909

test CHANGED
@@ -1,5 +1,17 @@
1
- `unsigned char header[128]` に読み込むのではなくて、[DDS_HEADER](https://docs.microsoft.com/ja-jp/windows/win32/direct3ddds/dds-header) の変数を用意してそこに`fread()` して `dwWidth` などにアクセスすればよいでしょう。
1
+ Windows環境で動かすなら、`unsigned char header[128]` に読み込むのではなくて、[DDS_HEADER](https://docs.microsoft.com/ja-jp/windows/win32/direct3ddds/dds-header) の変数を用意してそこに`fread()` して `dwWidth` などにアクセスすればよいでしょう。
2
2
 
3
3
 
4
4
 
5
- Windows以外の環境で動かすとか、リトルエンディアン以外の環境で動かすなどが必要なそれ以外の必要になります。
5
+ リトルエンディアンのWindows以外の環境で動かすなら、上記 `DDS_HEADER` に相当する構造体を自分で定義して使う手がります。
6
+
7
+
8
+
9
+ 質問文の元のコードを尊重するなら、
10
+
11
+ ```
12
+
13
+ printf("zああああ %d\n", header[12] | (header[13] << 8) | (header[14] << 16) | (header[15] << 24));
14
+
15
+ ```
16
+
17
+ のようにします。