big-endian convert: Use stdint.h
All checks were successful
Run Unit Tests / build-and-run-unit-tests (push) Successful in 5s
All checks were successful
Run Unit Tests / build-and-run-unit-tests (push) Successful in 5s
Replace "unsigned short" with uint16_t, "unsigned int" with uint32_t, and "unsigned long long" with uint64_t.
This commit is contained in:
parent
cb79e4e45c
commit
4670f0f3c1
3 changed files with 12 additions and 10 deletions
|
@ -20,14 +20,14 @@
|
|||
|
||||
int simple_archiver_helper_is_big_endian(void) {
|
||||
union {
|
||||
unsigned int i;
|
||||
uint32_t i;
|
||||
char c[4];
|
||||
} bint = {0x01020304};
|
||||
|
||||
return bint.c[0] == 1 ? 1 : 0;
|
||||
}
|
||||
|
||||
void simple_archiver_helper_16_bit_be(unsigned short *value) {
|
||||
void simple_archiver_helper_16_bit_be(uint16_t *value) {
|
||||
if (simple_archiver_helper_is_big_endian() == 0) {
|
||||
unsigned char c = ((unsigned char *)value)[0];
|
||||
((unsigned char *)value)[0] = ((unsigned char *)value)[1];
|
||||
|
@ -35,7 +35,7 @@ void simple_archiver_helper_16_bit_be(unsigned short *value) {
|
|||
}
|
||||
}
|
||||
|
||||
void simple_archiver_helper_32_bit_be(unsigned int *value) {
|
||||
void simple_archiver_helper_32_bit_be(uint32_t *value) {
|
||||
if (simple_archiver_helper_is_big_endian() == 0) {
|
||||
for (unsigned int i = 0; i < 2; ++i) {
|
||||
unsigned char c = ((unsigned char *)value)[i];
|
||||
|
@ -45,7 +45,7 @@ void simple_archiver_helper_32_bit_be(unsigned int *value) {
|
|||
}
|
||||
}
|
||||
|
||||
void simple_archiver_helper_64_bit_be(unsigned long long *value) {
|
||||
void simple_archiver_helper_64_bit_be(uint64_t *value) {
|
||||
if (simple_archiver_helper_is_big_endian() == 0) {
|
||||
for (unsigned int i = 0; i < 4; ++i) {
|
||||
unsigned char c = ((unsigned char *)value)[i];
|
||||
|
|
|
@ -19,18 +19,20 @@
|
|||
#ifndef SEODISPARATE_COM_SIMPLE_ARCHIVER_HELPERS_H_
|
||||
#define SEODISPARATE_COM_SIMPLE_ARCHIVER_HELPERS_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
static const unsigned int MAX_SYMBOLIC_LINK_SIZE = 512;
|
||||
|
||||
/// Returns non-zero if this system is big-endian.
|
||||
int simple_archiver_helper_is_big_endian(void);
|
||||
|
||||
/// Swaps value from/to big-endian. Nop on big-endian systems.
|
||||
void simple_archiver_helper_16_bit_be(unsigned short *value);
|
||||
void simple_archiver_helper_16_bit_be(uint16_t *value);
|
||||
|
||||
/// Swaps value from/to big-endian. Nop on big-endian systems.
|
||||
void simple_archiver_helper_32_bit_be(unsigned int *value);
|
||||
void simple_archiver_helper_32_bit_be(uint32_t *value);
|
||||
|
||||
/// Swaps value from/to big-endian. Nop on big-endian systems.
|
||||
void simple_archiver_helper_64_bit_be(unsigned long long *value);
|
||||
void simple_archiver_helper_64_bit_be(uint64_t *value);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -114,7 +114,7 @@ int main(void) {
|
|||
{
|
||||
// Only if system is little-endian.
|
||||
if (simple_archiver_helper_is_big_endian() == 0) {
|
||||
unsigned short u16 = 0x0102;
|
||||
uint16_t u16 = 0x0102;
|
||||
CHECK_TRUE(((unsigned char *)&u16)[0] == 2);
|
||||
CHECK_TRUE(((unsigned char *)&u16)[1] == 1);
|
||||
simple_archiver_helper_16_bit_be(&u16);
|
||||
|
@ -124,7 +124,7 @@ int main(void) {
|
|||
CHECK_TRUE(((unsigned char *)&u16)[0] == 2);
|
||||
CHECK_TRUE(((unsigned char *)&u16)[1] == 1);
|
||||
|
||||
unsigned int u32 = 0x01020304;
|
||||
uint32_t u32 = 0x01020304;
|
||||
CHECK_TRUE(((unsigned char *)&u32)[0] == 4);
|
||||
CHECK_TRUE(((unsigned char *)&u32)[1] == 3);
|
||||
CHECK_TRUE(((unsigned char *)&u32)[2] == 2);
|
||||
|
@ -140,7 +140,7 @@ int main(void) {
|
|||
CHECK_TRUE(((unsigned char *)&u32)[2] == 2);
|
||||
CHECK_TRUE(((unsigned char *)&u32)[3] == 1);
|
||||
|
||||
unsigned long long u64 = 0x010203040a0b0c0d;
|
||||
uint64_t u64 = 0x010203040a0b0c0d;
|
||||
CHECK_TRUE(((unsigned char *)&u64)[0] == 0xd);
|
||||
CHECK_TRUE(((unsigned char *)&u64)[1] == 0xc);
|
||||
CHECK_TRUE(((unsigned char *)&u64)[2] == 0xb);
|
||||
|
|
Loading…
Reference in a new issue