8 unsigned long long k = 1;
9 unsigned long long c = 256;
26 throw std::invalid_argument(
"pack: invalid value for size");
29 if (
size != 8 and (value >> (8*
size)) != 0) {
30 throw std::overflow_error(
"pack: int too big to convert");
33 as_chars = (
char*)&value;
35 if (std::endian::native == std::endian::little) {
36 memcpy(dest, as_chars,
size);
39 memcpy(dest, as_chars + (8 -
size),
size);
46 unsigned long long ret = 0;
47 char* as_chars = (
char*)&ret;
54 throw std::invalid_argument(
"unpack<unsigned long long>: invalid value for size");
57 if (std::endian::native == std::endian::little) {
58 memcpy(as_chars, src,
size);
61 memcpy(as_chars + (8 -
size), src,
size);
DEF_SIZE(long long)
Definition: ll.h:7
DEF_UNPACK(float)
Definition: double.h:30
size_t size(const std::string &value)
Definition: binary.h:8
void _reverse(char *s, unsigned int j, unsigned int k)
Reverses the contents of a character array between indices [j, k].
Definition: struct.h:26
Definition: basictypes.h:40
DEF_PACK(long long)
Definition: ll.h:22