本文以C++语言实现int数组压缩存储以及解压缩取出的例子。
原理:int类型数占16位,char类型占8位。int转为char默认保留低八位。
#include<iostream>
using namespace std;
#include<cstdlib>
#include<ctime>
void pack(int a[], unsigned char b[], int n);
void unpack(unsigned char b[], int a[], int n);
void main()
{
int i=0, n=0;
cout << "输入n:";
cin >> n;
int c[100000] = {0};
unsigned char p[100000] = {0};
srand((unsigned int)(time)(NULL));
for (i = 0; i < n; i++)
{
c[i] = rand() % 255;
}
pack(c, p, n);
cout << "压缩数组:";
for (i = 0; i < n; i++)
{
cout << p[i] << endl;
}
unpack(p, c, n);
cout << "解压数组:";
for (i = 0; i < n; i++)
{
cout << c[i] << endl;
}
}
void pack(int a[], unsigned char b[], int n)
{
for (int i = 0; i < n; i++)
{
b[i] = a[i];
}
}
void unpack(unsigned char b[], int a[], int n)
{
for (int i = 0; i < n; i++)
{
a[i] = b[i];
}
}
char c1 =-1;
cout<< (int)c1 << endl;
输出为:-1
unsigned char c2 = -1;
cout << ( int)c2 << endl;
输出为:255