Source
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
/******************************************************************************
* *
* Purpose: Converts unsigned integer 64 bit from host byte order to *
* little-endian byte order format. *
* *
* Return value: unsigned integer 64 bit in little-endian byte order format *
* *
******************************************************************************/
zbx_uint64_t zbx_htole_uint64(zbx_uint64_t data)
{
unsigned char buf[8];
buf[0] = (unsigned char)data; data >>= 8;
buf[1] = (unsigned char)data; data >>= 8;
buf[2] = (unsigned char)data; data >>= 8;
buf[3] = (unsigned char)data; data >>= 8;
buf[4] = (unsigned char)data; data >>= 8;
buf[5] = (unsigned char)data; data >>= 8;
buf[6] = (unsigned char)data; data >>= 8;
buf[7] = (unsigned char)data;
memcpy(&data, buf, sizeof(buf));
return data;
}
/******************************************************************************
* *
* Purpose: Converts unsigned integer 64 bit from little-endian byte order *
* format to host byte order. *
* *
* Return value: unsigned integer 64 bit in host byte order *
* *
******************************************************************************/
zbx_uint64_t zbx_letoh_uint64(zbx_uint64_t data)
{
unsigned char buf[8];
memcpy(buf, &data, sizeof(buf));
data = (zbx_uint64_t)buf[7]; data <<= 8;
data |= (zbx_uint64_t)buf[6]; data <<= 8;
data |= (zbx_uint64_t)buf[5]; data <<= 8;
data |= (zbx_uint64_t)buf[4]; data <<= 8;
data |= (zbx_uint64_t)buf[3]; data <<= 8;
data |= (zbx_uint64_t)buf[2]; data <<= 8;
data |= (zbx_uint64_t)buf[1]; data <<= 8;