From e4cec8bd86903ba3d996ccac7879ae8a93edcabe Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Thu, 11 Sep 2025 12:22:12 -0400 Subject: pkmacros: PK_TO_BIN parenthesize, proper casting --- pkmacros.h | 6 +++--- test/pkmacros.c | 33 ++++++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/pkmacros.h b/pkmacros.h index 5f50836..647a3b7 100644 --- a/pkmacros.h +++ b/pkmacros.h @@ -40,9 +40,9 @@ ((byte) & 0x02 ? '1' : '0'), \ ((byte) & 0x01 ? '1' : '0') #define PK_TO_BIN_8(u8) PK_TO_BIN(u8) -#define PK_TO_BIN_16(u16) PK_TO_BIN((u16 >> 8)), PK_TO_BIN(u16 & 0x00FF) -#define PK_TO_BIN_32(u32) PK_TO_BIN_16((u32 >> 16)), PK_TO_BIN_16(u32 & 0x0000FFFF) -#define PK_TO_BIN_64(u64) PK_TO_BIN_32((u64 >> 32)), PK_TO_BIN_32(u64 & 0x00000000FFFFFFFF) +#define PK_TO_BIN_16(u16) PK_TO_BIN((u16 >> 8)), PK_TO_BIN((u16 & 0x00FF)) +#define PK_TO_BIN_32(u32) PK_TO_BIN_16((u32 >> 16)), PK_TO_BIN_16((u32 & 0x0000FFFF)) +#define PK_TO_BIN_64(u64) PK_TO_BIN_32((u64 >> 32)), PK_TO_BIN_32((u64 & 0x00000000FFFFFFFF)) #if defined(__cplusplus) # define CAFE_BABE(T) reinterpret_cast(0xCAFEBABE) diff --git a/test/pkmacros.c b/test/pkmacros.c index 2a1f626..02885f6 100644 --- a/test/pkmacros.c +++ b/test/pkmacros.c @@ -10,7 +10,10 @@ int main(int argc, char *argv[]) (void)argc; (void)argv; (void)stdout; - + uint8_t u8; + uint16_t u16; + uint32_t u32; + uint64_t u64; // MISC { PK_LOGV_INF("PK_HAS_FLAG 000: %b\n", PK_HAS_FLAG(0xFF, 5)); @@ -29,18 +32,30 @@ int main(int argc, char *argv[]) // PK_TO_BIN printing { - uint8_t u8 = 0x55; // 01010101 - uint16_t u16 = 0x5555; - uint32_t u32 = 0x55555555; - uint64_t u64 = 0x5555555555555555; + for (uint64_t i = 0; i < 64; ++i) { + u64 = 1llu << i; + PK_LOGV_INF(PK_TO_BIN_PAT_64"\n", PK_TO_BIN_64(u64)); + } + u8 = 1; + u16 = 1; + u32 = 1; + u64 = 1; + PK_LOGV_INF(PK_TO_BIN_PAT_8 "\n", PK_TO_BIN_8(u8)); + PK_LOGV_INF(PK_TO_BIN_PAT_16"\n", PK_TO_BIN_16(u16)); + PK_LOGV_INF(PK_TO_BIN_PAT_32"\n", PK_TO_BIN_32(u32)); + PK_LOGV_INF(PK_TO_BIN_PAT_64"\n", PK_TO_BIN_64(u64)); + u8 = 0x55; // 01010101 + u16 = 0x5555; + u32 = 0x55555555; + u64 = 0x5555555555555555; PK_LOGV_INF(PK_TO_BIN_PAT_8 "\n", PK_TO_BIN_8(u8)); PK_LOGV_INF(PK_TO_BIN_PAT_16"\n", PK_TO_BIN_16(u16)); PK_LOGV_INF(PK_TO_BIN_PAT_32"\n", PK_TO_BIN_32(u32)); PK_LOGV_INF(PK_TO_BIN_PAT_64"\n", PK_TO_BIN_64(u64)); - u8 = 0xAA; // 10101010 - u16 = 0xAAAA; - u32 = 0xAAAAAAAA; - u64 = 0xAAAAAAAAAAAAAAAA; + u8 = 0xAA; // 10101010 + u16 = 0xAAAA; + u32 = 0xAAAAAAAA; + u64 = 0xAAAAAAAAAAAAAAAA; PK_LOGV_INF(PK_TO_BIN_PAT_8 "\n", PK_TO_BIN_8(u8)); PK_LOGV_INF(PK_TO_BIN_PAT_16"\n", PK_TO_BIN_16(u16)); PK_LOGV_INF(PK_TO_BIN_PAT_32"\n", PK_TO_BIN_32(u32)); -- cgit v1.2.3