69,378
社区成员
发帖
与我相关
我的任务
分享
实现两个字节字符串(unicode)与一个字节字符串(Ascii)互相转换。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int readInt(int& data, char*buffer)
{
int cnt = 0;
while(*buffer){
++cnt;
++buffer;
}
int x = ++cnt;
data = 0;
for(--buffer,--cnt; cnt; --buffer, --cnt)
{
(unsigned int&)data <<= 8;
(unsigned int&)data |= (unsigned char)*buffer;
}
return x;
}
int writeInt(int data,char*buffer)
{
int cnt = 0;
while(data){
*buffer++ = (unsigned int&)data & 0xff;
(unsigned int&) data >>= 8;
++cnt;
}
*buffer = 0;
return ++cnt;
}
int readIntText(int data,char*buffer)
{
int cnt = 0;
while(*buffer){
++cnt;
++buffer;
}
int x = ++cnt;
data = 0;
for(--buffer,--cnt; cnt; --buffer, --cnt)
{
(unsigned int&)data <<= 8;
(unsigned int&)data |= *buffer - '0';
}
return x;
}
int writeIntText(int data,char*buffer)
{
int cnt = 0;
while(data){
*buffer++ = (unsigned int&)data & 0xff - '0';
(unsigned int&) data >>= 8;
++cnt;
}
*buffer = 0;
return ++cnt;
}
int main()
{
char buf[128];
srand((unsigned)time(0));
int x = rand(), y = rand(), z = rand();
printf("%x %x %x\n", x, y, z);
int off = writeInt(x, buf);
off += writeInt(y, buf+off);
off += writeInt(z, buf+off);
off = readInt(x, buf);
off += readInt(y, buf + off);
off += readInt(z, buf + off);
printf("%x %x %x\n", x, y,z);
off = writeIntText(x, buf);
off += writeIntText(y, buf+off);
off += writeIntText(z, buf+off);
off = readIntText(x, buf);
off += readIntText(y, buf + off);
off += readIntText(z, buf + off);
printf("%x %x %x\n", x, y,z);
return 0;
}