资源简介
纯C语音进行各种格式编码直接的转换。
int gbk_to_unicode
int unicode_to_gbk
int unicode_to_utf8
int utf8_to_unicode

代码片段和文件信息
#include “stdafx.h“
#include “string_conv.h“
#include “gbk_to_unicode.h“
#include “unicode_to_gbk.h“
int dprintf(char *format ... )
{
#if 0
char buf[1024];
va_list marker;
int n;
va_start(marker format); // 开始分析字符串
n = vsprintf(buf format marker); // 格式化输出字符串
printf(“%s“ buf);
va_end(marker); // 结束分析
return 0;
#else
return 0;
#endif
}
/*-----------------+-------------------------+------------------------
| endian = 1 大端 |
| endian = 0 小端 |
-------------------+-------------------------+-----------------------*/
int gbk_to_unicode(unsigned char *gbk_buf unsigned short *unicode_buf int max_unicode_buf_size int endian)
{
unsigned short word;
unsigned char *gbk_ptr = gbk_buf;
unsigned short *uni_ptr = unicode_buf;
unsigned int uni_ind = 0 gbk_ind = 0 uni_num = 0;
unsigned char ch;
int word_pos;
if( !gbk_buf || !unicode_buf )
return -1;
while(1)
{
ch = *(gbk_ptr + gbk_ind);
if(ch == 0x00)
break;
if( ch > 0x80 )
{
//chinese
//word = *p *256 + *(p+1);
if(endian == 1) //大端
{
word = *(gbk_ptr + gbk_ind);
word <<= 8;
gbk_ind++;
word += *(gbk_ptr + gbk_ind);
gbk_ind++;
}
else
{
word = *(gbk_ptr + gbk_ind + 1);
word <<= 8;
word += *(gbk_ptr + gbk_ind);
gbk_ind += 2;
}
//printf(“word: 0x%x\n“ word);
word_pos = word - g_gbk_first_code;
if(word >= g_gbk_first_code && word <= g_gbk_last_code && (word_pos < g_gbk_to_unicode_buf_size))
{
//*p_out = g_gbk_to_unicode_buf[word_pos];
//*p_out ++;
//n++;
*(uni_ptr + uni_ind) = g_gbk_to_unicode_buf[word_pos];
uni_ind++;
uni_num++;
}
}
else
{
//for ASCII
//*p_out = (unsigned short)*p;
//*p_out ++;
//n++;
gbk_ind++;
//*(uni_ptr + uni_ind) = g_gbk_to_unicode_buf[word_pos];
*(uni_ptr + uni_ind) = ch;
uni_ind++;
uni_num++;
}
if(uni_num > max_unicode_buf_size - 1)
break;
}
return uni_num;
}
int unicode_to_gbk(unsigned short *unicode_buf unsigned char *gbk_buf int max_gbk_buf_size int endian)
{
unsigned short word;
unsigned short gbk_word;
unsigned char ch;
unsigned char *gbk_ptr = gbk_buf;
unsigned short *uni_ptr = unicode_buf;
unsigned int uni_ind = 0 gbk_ind = 0 gbk_num = 0;
int word_pos;
if( !gbk_buf || !unicode_buf )
return -1;
while(1)
{
word = *(uni_ptr + uni_ind);
uni_ind++;
if(word == 0x0000) //字符串结束符
break;
//dprintf(“[0]word: 0x%x\n“ word);
if(endian == 1) //大端
{
//高低位交换
ch = (unsigned char)word;
word = word >> 8;
word += ch << 8;
}
//dprintf(“
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 287902 2010-07-22 11:51 conver code\gbk_to_unicode.h
文件 7318 2010-07-22 14:55 conver code\string_conv.cpp
文件 929 2010-07-22 14:52 conver code\string_conv.h
文件 209545 2010-07-22 14:48 conver code\unicode_to_gbk.h
目录 0 2010-07-22 14:56 conver code
----------- --------- ---------- ----- ----
505694 5
- 上一篇:数据结构与算法 C语言描述课后习题答案
- 下一篇:下行法求故障树最小割集
相关资源
- 基于MFC的TCP调试助手源码95706
- 国际象棋的qt源代码
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 利用C++哈希表的方法实现电话号码查
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 移木块游戏,可以自编自玩,vc6.0编写
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- C++纯文字DOS超小RPG游戏
- 个人日常财务管理系统(C语言)
- MFC数字钟(基于VC6.0)
- c语言电子商务系统
评论
共有 条评论