From 45923c08b00ccdfd888caf6d2b555a137c563988 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Wed, 18 Oct 2017 16:13:24 +0000 Subject: Better packing / unpacking code Godbolted for x86_64 with gcc and clang. --- src/libstddjb/uint64_pack_big.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) (limited to 'src/libstddjb/uint64_pack_big.c') diff --git a/src/libstddjb/uint64_pack_big.c b/src/libstddjb/uint64_pack_big.c index 381f105..c0bbcd7 100644 --- a/src/libstddjb/uint64_pack_big.c +++ b/src/libstddjb/uint64_pack_big.c @@ -1,16 +1,10 @@ /* ISC license. */ +#include #include -#include void uint64_pack_big (char *s, uint64_t u) { - ((unsigned char *)s)[7] = T8(u) ; u >>= 8 ; - ((unsigned char *)s)[6] = T8(u) ; u >>= 8 ; - ((unsigned char *)s)[5] = T8(u) ; u >>= 8 ; - ((unsigned char *)s)[4] = T8(u) ; u >>= 8 ; - ((unsigned char *)s)[3] = T8(u) ; u >>= 8 ; - ((unsigned char *)s)[2] = T8(u) ; u >>= 8 ; - ((unsigned char *)s)[1] = T8(u) ; u >>= 8 ; - ((unsigned char *)s)[0] = T8(u) ; + u = uint64_big(u) ; + memcpy(s, &u, sizeof(uint64_t)) ; } -- cgit v1.2.3