@@ -227,31 +227,21 @@ uint16_t Image::byteSwap(uint16_t value, bool bSwap) {
227
227
}
228
228
229
229
uint16_t Image::byteSwap2 (const DataBuf& buf, size_t offset, bool bSwap) {
230
- uint16_t v = 0 ;
231
- auto p = reinterpret_cast <char *>(&v);
232
- p[0 ] = buf.read_uint8 (offset);
233
- p[1 ] = buf.read_uint8 (offset + 1 );
230
+ uint16_t v;
231
+ std::memcpy (&v, buf.c_data (offset), sizeof (uint16_t ));
234
232
return Image::byteSwap (v, bSwap);
235
233
}
236
234
237
235
uint32_t Image::byteSwap4 (const DataBuf& buf, size_t offset, bool bSwap) {
238
- uint32_t v = 0 ;
239
- auto p = reinterpret_cast <char *>(&v);
240
- p[0 ] = buf.read_uint8 (offset);
241
- p[1 ] = buf.read_uint8 (offset + 1 );
242
- p[2 ] = buf.read_uint8 (offset + 2 );
243
- p[3 ] = buf.read_uint8 (offset + 3 );
236
+ uint32_t v;
237
+ std::memcpy (&v, buf.c_data (offset), sizeof (uint32_t ));
244
238
return Image::byteSwap (v, bSwap);
245
239
}
246
240
247
241
// / \todo not used internally. At least we should test it
248
242
uint64_t Image::byteSwap8 (const DataBuf& buf, size_t offset, bool bSwap) {
249
- uint64_t v = 0 ;
250
- auto p = reinterpret_cast <byte*>(&v);
251
-
252
- for (int i = 0 ; i < 8 ; i++)
253
- p[i] = buf.read_uint8 (offset + i);
254
-
243
+ uint64_t v;
244
+ std::memcpy (&v, buf.c_data (offset), sizeof (uint64_t ));
255
245
return Image::byteSwap (v, bSwap);
256
246
}
257
247
0 commit comments