-
Notifications
You must be signed in to change notification settings - Fork 0
/
ByteTools.cpp
238 lines (162 loc) · 4.37 KB
/
ByteTools.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
/**
* ByteTools (C++) v1.1.1
*
* Copyright (c) PROPHESSOR 2019
*/
#pragma once
#include <iostream>
#include <cstdio>
#include <stdint.h>
#define SEEK_START SEEK_SET
class ByteTools {
public:
FILE *m_buffer;
ByteTools() {
std::cout << "ByteTools (C++) v1.0.0 // Copyright (c) PROPHESSOR 2019" << std::endl;
}
ByteTools(const char* filename) {
ByteTools();
open(filename);
}
void open(const char* filename) {
m_buffer = fopen(filename, "rb");
}
size_t tell(void) {
return ftell(m_buffer);
}
void seek(long int offset, int mode) {
fseek(m_buffer, offset, mode);
}
// read
// int8
int8_t readInt8() {
int8_t tmp;
fread(&tmp, sizeof(int8_t), 1, m_buffer);
return tmp;
}
uint8_t readUInt8() {
uint8_t tmp;
fread(&tmp, sizeof(uint8_t), 1, m_buffer);
return tmp;
}
// int16
int16_t readInt16() {
int16_t tmp;
fread(&tmp, sizeof(int16_t), 1, m_buffer);
return tmp;
}
uint16_t readUInt16() {
uint16_t tmp;
fread(&tmp, sizeof(uint16_t), 1, m_buffer);
return tmp;
}
int16_t readInt16LE() {
return readInt16();
}
uint16_t readUInt16LE() {
return readUInt16();
}
// int32
int32_t readInt32() {
int32_t tmp;
fread(&tmp, sizeof(int32_t), 1, m_buffer);
return tmp;
}
uint32_t readUInt32() {
uint32_t tmp;
fread(&tmp, sizeof(uint32_t), 1, m_buffer);
return tmp;
}
int32_t readInt32LE() {
return readInt32();
}
uint32_t readUInt32LE() {
return readUInt32();
}
// seek
// int8
int8_t seekInt8() {
int8_t tmp;
fread(&tmp, sizeof(int8_t), 1, m_buffer);
seek(-sizeof(int8_t), SEEK_CUR);
return tmp;
}
uint8_t seekUInt8() {
uint8_t tmp;
fread(&tmp, sizeof(uint8_t), 1, m_buffer);
seek(-sizeof(uint8_t), SEEK_CUR);
return tmp;
}
// int16
int16_t seekInt16() {
int16_t tmp;
fread(&tmp, sizeof(int16_t), 1, m_buffer);
seek(-sizeof(int16_t), SEEK_CUR);
return tmp;
}
uint16_t seekUInt16() {
uint16_t tmp;
fread(&tmp, sizeof(uint16_t), 1, m_buffer);
seek(-sizeof(uint16_t), SEEK_CUR);
return tmp;
}
int16_t seekInt16LE() {
return seekInt16();
}
uint16_t seekUInt16LE() {
return seekUInt16();
}
// int32
int32_t seekInt32() {
int32_t tmp;
fread(&tmp, sizeof(int32_t), 1, m_buffer);
seek(-sizeof(int32_t), SEEK_CUR);
return tmp;
}
uint32_t seekUInt32() {
uint32_t tmp;
fread(&tmp, sizeof(uint32_t), 1, m_buffer);
seek(-sizeof(uint32_t), SEEK_CUR);
return tmp;
}
int32_t seekInt32LE() {
return seekInt32();
}
uint32_t seekUInt32LE() {
return seekUInt32();
}
// skip
// int8
void skipInt8() {
seek(sizeof(int8_t), SEEK_CUR);
}
void skipUInt8() {
seek(sizeof(uint8_t), SEEK_CUR);
}
// int16
void skipInt16() {
seek(sizeof(int16_t), SEEK_CUR);
}
void skipUInt16() {
seek(sizeof(uint16_t), SEEK_CUR);
}
void skipInt16LE() {
seek(sizeof(int16_t), SEEK_CUR);
}
void skipUInt16LE() {
seek(sizeof(uint16_t), SEEK_CUR);
}
// int32
void skipInt32() {
seek(sizeof(int32_t), SEEK_CUR);
}
void skipUInt32() {
seek(sizeof(uint32_t), SEEK_CUR);
}
void skipInt32LE() {
seek(sizeof(int32_t), SEEK_CUR);
}
void skipUInt32LE() {
seek(sizeof(uint32_t), SEEK_CUR);
}
};