💖 简介
redis 源码版本:3.05.04
如需源码,可官网下载或如下直接下载:
链接:https://pan.baidu.com/s/1vl_8UD30xZry4irsgmbdLQ
提取码:mpds
如有理解不对的地方,欢迎各位指出,大家共同交流和学习。 如有帮助,请点赞加支持! 送人玫瑰手有余香!🌹🌹🌹
💖源码学习
源码测试,很简单,不需要讲解。
#define _CRT_SECURE_NO_WARNINGS
#include <stdint.h>
#include <stdio.h>
#include <iostream>
using namespace std;
/*
小端PC机
16位无符号数小端转大端
*/
void memrev16(void *p) {
unsigned char *x = reinterpret_cast<unsigned char*>(p);
unsigned char t;
t = x[0];
x[0] = x[1];
x[1] = t;
}
void Inmemrev16(unsigned int *p) {
unsigned int *x = (p);
unsigned int t;
t = x[0];
x[0] = x[1];
x[1] = t;
}
/* Toggle the 32 bit unsigned integer pointed by *p from little endian to
* big endian */
void memrev32(void *p) {
//unsigned char *x = p, t;
unsigned char *x = reinterpret_cast<unsigned char*>(p);
unsigned char t;
t = x[0];
x[0] = x[3];
x[3] = t;
t = x[1];
x[1] = x[2];
x[2] = t;
}
/* Toggle the 64 bit unsigned integer pointed by *p from little endian to
* big endian */
void memrev64(void *p) {
//unsigned char *x = p, t;
unsigned char *x = reinterpret_cast<unsigned char*>(p);
unsigned char t;
t = x[0];
x[0] = x[7];
x[7] = t;
t = x[1];
x[1] = x[6];
x[6] = t;
t = x[2];
x[2] = x[5];
x[5] = t;
t = x[3];
x[3] = x[4];
x[4] = t;
}
uint16_t intrev16(uint16_t v) {
memrev16(&v);
return v;
}
uint32_t intrev32(uint32_t v) {
memrev32(&v);
return v;
}
uint64_t intrev64(uint64_t v) {
memrev64(&v);
return v;
}
int main()
{
char buf[32];
sprintf(buf, "12345678");
memrev16(buf);
printf("%s\n", buf);//21345678
sprintf(buf, "12345678");
memrev32(buf);
printf("%s\n", buf); //43215678
sprintf(buf, "12345678");
memrev64(buf);
printf("%s\n", buf);//87654321
return 0;
}