字符转换的问题,在线等待,急救!
我在C++Builder中添加了两个Memo,现要将Memo2里面的十六进制的数据转换成为字符型的数据,通过串口显示在Memo1里面,请问该如何实现,用到什么函数呢? 问题点数:20、回复次数:10Top
1 楼fatwave(风中的雨)回复于 2003-12-03 08:57:35 得分 0
AnsiString h = "b3";
h = "0x" + h;
int i = h.ToIntDef(0); // i = 179Top
2 楼codecb(阿星)回复于 2003-12-03 08:58:08 得分 0
Converts a string of hexadecimal digits to the corresponding binary value.
HexToBinTop
3 楼ywpower(茜茜)回复于 2003-12-03 09:38:47 得分 0
比如说我在Memo2里面填写61 62.通过发送按扭,在Memo1里面就显示a b.我想知道用到什么函数,可以实现转换Top
4 楼PPower(月亮光光,照地堂)回复于 2003-12-03 11:20:04 得分 0
1、把字符串分解成一個個子串,每個子串都只有一個十六进制的数据,
2、將十六进制的数据,轉成字符。
或者用sscanf函數格式化輸入,具體看幫助。Top
5 楼huoniao1976(火鸟1976)回复于 2003-12-03 12:36:45 得分 0
进行转换char()Top
6 楼ywpower(茜茜)回复于 2003-12-03 13:23:20 得分 0
huoniao1976(火鸟1976) :可以具体一点吗?谢谢了Top
7 楼yjy1001(蓝鲸--优秀得郁闷的鱼)回复于 2003-12-03 13:37:02 得分 0
10进制 转 16 进制
IntToHex(int x, int count);
16 进制 转 10,我通常自己写函数
函数很简单,这里不写了,自己写吧
显示的时候 转成 10进制,然后用 char()显示出来 就可以了Top
8 楼ywpower(茜茜)回复于 2003-12-03 14:16:42 得分 0
是这样的,我做的是用串口通讯的程序,现将Memo2里的内容放进了inbuff[]里面,如果Memo2里面是十六进制的数据61 62 63,如何转换成字符在Memo1里面显示a b c呢。inbuff[]是Char类型的。Top
9 楼huoniao1976(火鸟1976)回复于 2003-12-03 16:31:53 得分 20
写什么就发什么,不用转换呀,为什么要进行转换呢?
临时写了一个转换程序,你看看能不能用
str = Memo1->Text;
str = str.UpperCase();
//自己判断是单字节还是双字节
int bb = 0;
for (int i=1;i<=str.Length();i++){
int aa = 1;
for (int j=1;j<=str.Length()-i;j++){
aa *= 16;
}
int cc;
if (str.SubString(i,1) == "A"){
cc = 10;
} else if (str.SubString(i,1) == "B"){
cc = 11;
} else if (str.SubString(i,1) == "C"){
cc = 12;
} else if (str.SubString(i,1) == "D"){
cc = 13;
} else if (str.SubString(i,1) == "E"){
cc = 14;
} else if (str.SubString(i,1) == "F"){
cc = 15;
} else {
cc = StrToInt(str.SubString(i,1));
}
bb += cc * aa;
}
Momo2->Line->Add( char(bb));
Top
10 楼huoniao1976(火鸟1976)回复于 2003-12-03 16:33:29 得分 0
这是用串口发送数据
String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if (Key!=13)
return;
if (hComm==0)
return; // 检查Handle值
Temp = mSend->Text;//取得传送的字符串
SendData = Temp.c_str(); //字符串转换
//取得传送的字符串长度
BS = Temp.Length();
//BS = StrLen(SendData); //也可以使用此种方式取得字符串长度
// 实际的传送动作
WriteFile(hComm,SendData,BS, &lrc,NULL); // 送出数据Top




