From eda204bf8789a38b0a3f8411ed92696fffd85c9d Mon Sep 17 00:00:00 2001 From: douniwan5788 Date: Tue, 17 Sep 2024 22:54:43 +0800 Subject: [PATCH] add: reflect48 --- common/commonutil.c | 7 +++++++ common/commonutil.h | 1 + 2 files changed, 8 insertions(+) diff --git a/common/commonutil.c b/common/commonutil.c index be7576a8c..f9f039df1 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -144,6 +144,13 @@ uint32_t reflect32(uint32_t b) { return v; } +uint64_t reflect48(uint64_t v) { + uint64_t vhi = reflect16(v >> 32); + uint64_t vlo = reflect32(v); + v = (vlo << 32) | (vhi & 0xFFFF); + return v; +} + uint64_t reflect64(uint64_t b) { // https://graphics.stanford.edu/~seander/bithacks.html#BitReverseTable uint64_t v = b; // 64-bit word to reverse bit order diff --git a/common/commonutil.h b/common/commonutil.h index 62b1b78e7..a3476a284 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -74,6 +74,7 @@ uint32_t reflect(uint32_t v, int b); // used in crc.c ... uint8_t reflect8(uint8_t b); // dedicated 8bit reversal uint16_t reflect16(uint16_t b); // dedicated 16bit reversal uint32_t reflect32(uint32_t b); // dedicated 32bit reversal +uint64_t reflect48(uint64_t b); // dedicated 48bit reversal uint64_t reflect64(uint64_t b); // dedicated 64bit reversal void num_to_bytes(uint64_t n, size_t len, uint8_t *dest);