Template
1
0
mirror of https://github.com/bol-van/zapret2.git synced 2026-03-14 06:13:09 +00:00

nfqws2: swap24

This commit is contained in:
bol-van
2025-12-28 12:49:09 +03:00
parent ba526b75e1
commit 58320aecbe
4 changed files with 17 additions and 0 deletions

View File

@@ -1752,6 +1752,7 @@ function bu48(u48)
```
function swap16(u16)
function swap24(u24)
function swap32(u32)
function swap48(u48)
```

View File

@@ -401,6 +401,10 @@ uint16_t swap16(uint16_t u)
// __builtin_bswap16 is absent in ancient lexra gcc 4.6
return (u>>8) | ((u&0xFF)<<8);
}
uint32_t swap24(uint32_t u)
{
return (u>>16) & 0xFF | u & 0xFF00 | (u<<16) & 0xFF0000;
}
uint64_t swap48(uint64_t u)
{
return ((u & 0xFF0000000000) >> 40) | ((u & 0xFF00000000) >> 24) | ((u & 0xFF000000) >> 8) | ((u & 0xFF0000) << 8) | ((u & 0xFF00) << 24) | ((u & 0xFF) << 40);

View File

@@ -67,6 +67,7 @@ uint64_t pntoh64(const uint8_t *p);
void phton64(uint8_t *p, uint64_t v);
uint16_t swap16(uint16_t u);
uint32_t swap24(uint32_t u);
uint64_t swap48(uint64_t u);
bool parse_hex_str(const char *s, uint8_t *pbuf, size_t *size);

View File

@@ -281,6 +281,16 @@ static int luacall_swap16(lua_State *L)
lua_pushinteger(L,swap16(u));
return 1;
}
static int luacall_swap24(lua_State *L)
{
lua_check_argc(L,"swap24",1);
int64_t i =(int64_t)luaL_checklint(L,1);
if (i>0xFFFFFF || i<-(int64_t)0xFFFFFF) luaL_error(L, "out of range");
uint32_t u = (uint32_t)i;
lua_pushlint(L,swap24(u));
return 1;
}
static int luacall_swap32(lua_State *L)
{
lua_check_argc(L,"swap32",1);
@@ -3186,6 +3196,7 @@ static void lua_init_functions(void)
{"bu48",luacall_bu48},
// swap byte order
{"swap16",luacall_swap16},
{"swap24",luacall_swap24},
{"swap32",luacall_swap32},
{"swap48",luacall_swap48},