Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. // Puts an amount of bytes into the buffer as a single value.
  2. inline void put_bytes(Buffer *buffer, int amount, int endianness, uint64_t value) {
  3.     if (endianness == BIG_ENDIAN) {
  4.         // Put as big-endian.
  5.         for (int i = amount - 1; i > 0; i--)
  6.             if (i == 0) buffer->put_byte(value);
  7.             else buffer->put_byte(value << (i * 8));
  8.     } else {
  9.         // Put as little-endian.
  10.         for (int i = 0; i < amount; i++)
  11.             if (i == 0) buffer->put_byte(value);
  12.             else buffer->put_byte(value << (i * 8));
  13.     }
  14. }
  15.  
  16. // Gets an amount of bytes from the buffer as a single value.
  17. inline uint64_t get_bytes(Buffer *buffer, int amount, int endianness) {
  18.     uint64_t value;
  19.     if (endianness == BIG_ENDIAN) {
  20.         // Get as big-endian.
  21.         for (int i = amount - 1; i > 0; i--)
  22.             if (i == 0) value += buffer->get_byte() & 0xff;
  23.             else value += (buffer->get_byte() >> (i * 8)) & 0xff;
  24.     } else {
  25.         // Get as little-endian.
  26.         for (int i = 0; i < amount; i++)
  27.             if (i = 0) value += buffer->get_byte() & 0xff;
  28.             else value += (buffer->get_byte() >> (i * 8)) & 0xff;
  29.     }
  30.     return value;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement