?? encode_decode.cpp
字號:
#include <stdio.h>
#include <string.h>
typedef unsigned char UINT8;
typedef unsigned short UINT16;
typedef unsigned long UINT32;
//const UINT8 str_string[] = "1234";
//const UINT8 str_string[] = "hellohello";
const UINT8 str_string[] = "hello world";
UINT8 bit8str[140];
UINT8 bit7str[140];
UINT8 Encode_English(UINT8 * ptrbit8,UINT8 * ptrbit7,UINT8 length);
UINT8 Decode_English(UINT8 * ptrbit7,UINT8 * ptrbit8,UINT8 length);
void main(void)
{
UINT8 length,i;
memset(bit8str,0,sizeof(bit8str));
memset(bit7str,0,sizeof(bit7str));
length = sizeof(str_string) - 1;
memcpy(bit8str,str_string,length);
length = Encode_English(bit8str,bit7str,length);
for(i=0;i<length;i++) printf("%02x ",bit7str[i]);
printf("\n");
length = Decode_English(bit7str,bit8str,length);
for(i=0;i<length;i++) printf("%c ",bit8str[i]);
printf("\n");
}
UINT8 Encode_English(UINT8 * ptrbit8,UINT8 * ptrbit7,UINT8 length)
{
UINT8 i,n,tempstr,rtnlen;
n = 0;
rtnlen = 0;
for(i=0;i<length;i++)
{
if(i != length-1)
{
tempstr = (ptrbit8[i] & 0x7f) >> n;
tempstr |= (ptrbit8[i+1] << (7-n));
}
else //last byte
{
tempstr = (ptrbit8[i] & 0x7f) >> n;
}
*ptrbit7++ = tempstr;
rtnlen++;
n = (n+1) % 7;
if(n == 0) i++;
}
return rtnlen;
}
UINT8 Decode_English(UINT8 * ptrbit7,UINT8 * ptrbit8,UINT8 length)
{
UINT8 i,n,tempstr,rtnlen;
n = 0;
rtnlen = 0;
i = 0;
while(i < length)
{
if(n == 0) //first byte of the eight bytes
{
tempstr = ptrbit7[i] & 0x7f;
i++;
}
else if(n == 7)
{
tempstr = 0;
tempstr |= ptrbit7[i-1] >> (8-n);
}
else
{
tempstr = (ptrbit7[i] << n) & 0x7f;
tempstr |= ptrbit7[i-1] >> (8-n);
i++;
}
*ptrbit8++ = tempstr;
rtnlen++;
n = (n+1) % 8;
}
return rtnlen;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -