/ libi2pd / I2PEndian.cpp
I2PEndian.cpp
 1  /*
 2  * Copyright (c) 2013-2022, The PurpleI2P Project
 3  *
 4  * This file is part of Purple i2pd project and licensed under BSD3
 5  *
 6  * See full license text in LICENSE file at top of project tree
 7  */
 8  
 9  #include "I2PEndian.h"
10  
11  // http://habrahabr.ru/post/121811/
12  // http://codepad.org/2ycmkz2y
13  
14  #include "LittleBigEndian.h"
15  
16  #ifdef NEEDS_LOCAL_ENDIAN
17  uint16_t htobe16(uint16_t int16)
18  {
19  	BigEndian<uint16_t> u16(int16);
20  	return u16.raw_value;
21  }
22  
23  uint32_t htobe32(uint32_t int32)
24  {
25  	BigEndian<uint32_t> u32(int32);
26  	return u32.raw_value;
27  }
28  
29  uint64_t htobe64(uint64_t int64)
30  {
31  	BigEndian<uint64_t> u64(int64);
32  	return u64.raw_value;
33  }
34  
35  uint16_t be16toh(uint16_t big16)
36  {
37  	LittleEndian<uint16_t> u16(big16);
38  	return u16.raw_value;
39  }
40  
41  uint32_t be32toh(uint32_t big32)
42  {
43  	LittleEndian<uint32_t> u32(big32);
44  	return u32.raw_value;
45  }
46  
47  uint64_t be64toh(uint64_t big64)
48  {
49  	LittleEndian<uint64_t> u64(big64);
50  	return u64.raw_value;
51  }
52  #endif