回答編集履歴
2
追記
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
追記
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
|
-
|
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
|
+
のようにします。
|