31 righe
735 B
C
31 righe
735 B
C
|
#include "utils.h"
|
||
|
|
||
|
/**
|
||
|
* Converts the value of 'in' to 'outlen' bytes in big-endian byte order.
|
||
|
*/
|
||
|
void ull_to_bytes(unsigned char *out, unsigned int outlen,
|
||
|
unsigned long long in)
|
||
|
{
|
||
|
int i;
|
||
|
|
||
|
/* Iterate over out in decreasing order, for big-endianness. */
|
||
|
for (i = outlen - 1; i >= 0; i--) {
|
||
|
out[i] = in & 0xff;
|
||
|
in = in >> 8;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Converts the inlen bytes in 'in' from big-endian byte order to an integer.
|
||
|
*/
|
||
|
unsigned long long bytes_to_ull(const unsigned char *in, unsigned int inlen)
|
||
|
{
|
||
|
unsigned long long retval = 0;
|
||
|
unsigned int i;
|
||
|
|
||
|
for (i = 0; i < inlen; i++) {
|
||
|
retval |= ((unsigned long long)in[i]) << (8*(inlen - 1 - i));
|
||
|
}
|
||
|
return retval;
|
||
|
}
|