Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- inline void put_uint32_le(unsigned char *dst, uint32_t n)
- {
- *reinterpret_cast<uint32_t *> (dst) = n;
- }
- inline void put_uint32_le(unsigned char *dst, uint32_t n)
- {
- dst[0] = static_cast<unsigned char> (n & 255);
- dst[1] = static_cast<unsigned char> ((n >> 8) & 255);
- dst[2] = static_cast<unsigned char> ((n >> 16) & 255);
- dst[3] = static_cast<unsigned char> (n >> 24);
- }
- inline void put_uint32_le(unsigned char *dst, uint32_t n)
- {
- #ifdef WE_HAVE_LITTLE_ENDIAN_PROCESSOR
- *reinterpret_cast<uint32_t *> (dst) = n;
- #else
- dst[0] = static_cast<unsigned char> (n & 255);
- dst[1] = static_cast<unsigned char> ((n >> 8) & 255);
- dst[2] = static_cast<unsigned char> ((n >> 16) & 255);
- dst[3] = static_cast<unsigned char> (n >> 24);
- #endif
- }
- union
- {
- uint32_t v;
- uint8_t c[4];
- }value;
- #include <string.h>
- #include <stdint.h>
- inline uint16_t get_uint16_le(const unsigned char *src)
- {
- return *reinterpret_cast<const uint16_t *> (src);
- }
- inline void put_uint32_le(unsigned char *dst, uint_fast32_t n)
- {
- memcpy(dst, &n, 4);
- // *reinterpret_cast<uint32_t *> (dst) = n;
- }
- extern const uint32_t crc32_table[256];
- static uint32_t calculate_crc32(const unsigned char *buf, size_t len)
- {
- uint32_t crc = 0;
- while (len--)
- {
- crc ^= crc32_table[*(buf++)];
- }
- return crc;
- }
- void set_crc32(unsigned char *begin)
- {
- size_t sz = 3 + get_uint16_le(begin);
- put_uint32_le(begin + sz, calculate_crc32(begin, sz));
- }
Add Comment
Please, Sign In to add comment