懂C++ Builder 的一定进来看看(200分)

R

rjiajia

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手谁能把下面两段用C++ Builder 写的程序翻译成标准C,一经调试成功,300分奉上
1.中文编码
中文编码较为简单,就是将GB2312的中文编码转换为代码页为CP936的Unicode编码即可
以下是C++Builder的实现代码
String EncodeChinese(String InputStr)
{
int cur;
String tempstr,returnstr;
WideString ws;
wchar_t mid[2];
ws=WideString(InputStr);
for(int i=1;i<=ws.Length();i++)
{
wcscpy(mid,ws.SubString(i,1).c_bstr());
cur=mid[0];
FmtStr(tempstr,"%4.4X",ARRAYOFCONST((cur)));
returnstr=returnstr+tempstr;
}
return returnstr;
}
2.中文解码
将代码页为CP936的Unicode编码转换为GB2312的中文编码即可

以下是C++Builder的实现代码
String DecodeChinese(String InputStr)
{
wchar_t Buf[300];
for(int i=0;i<InputStr.Length();i=i+4)
{
Buf[i/4]=StrToInt("0x"+InputStr.SubString(i+1,4));
}
Buf[InputStr.Length()/4]=0;
return WideCharToString(Buf);
}

 
function EncodeChinese(const InputStr: String): String;
var
W : WideString;
I : Integer;
begin
Result := '';
W := WideString(InputStr);
for I := 1 to Length(W)do
begin
Result := Result + IntToHex(Ord(W), 4);
end;
end;

function DecodeChinese(const InputStr: String): String;
var
I : Integer;
W : WideString;
begin
I := 0;
W := '';
while I < Length(InputStr)do
begin
W := W + WideChar(StrToInt('$'+Copy(InputStr, I+1, 4)));
Inc(I, 4);
end;

Result := W;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := EncodeChinese(Edit1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text := DecodeChinese(Edit2.Text);
end;
 
tseug你好,很感谢你的回答,不过可能你没看清我的要求,
我是要求把程序改写为标准C程序。欢迎继续!
 
关键是变量类型的转换,C++Builder有许多类型是C中没有的
转换起来有一些麻烦,
 
各位请帮帮忙,继续继续呀
 
很不好办,因为标准C里面没有讲GB转UNICODE的函数。
这个需要Windows的支持。
 
想发短信吧?
 
NowCan,是呀,一直在为字库烦着呢,兄弟能否帮帮忙
 
我有GB2312与Unicode的转换表
 
基于什么编译器呀,楼主?
 
我现在是用VC++在开发一嵌入式通讯软件,需要用到unic和GB码间的转换,但程序空间又不
太够,不想造表。希望有知道如何做的朋友帮帮忙。
 
这也太简单了点吧
WideString 用 w_char* 不就行了?
 
void EncodeChinese(char *InputStr,char *OutStr)
{
int i,iLen;
iLen=strlen(OutStr);
for(i=0;i<iLen;i+=2)
{
sprintf(OutStr[i*4],"%02x%02x",InputStr[i*2],InputStr[i*2+1]);
}
}
 
主要是类型要转换为标准类型的
 

Similar threads

I
回复
0
查看
517
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
587
import
I
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部