用C++builder怎么實作字串資料轉換成十六進制,比如說字串是"9f",轉換成十六進制值是0x9f; 字串是"af",轉換成十六進制值是0xaf?
代碼如下:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
AnsiString Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if(hComm==0) return; //檢查Handle值
Temp=Memo1->Text; //取得發送的字串,就是要把Temp轉換成十六進制
SendData=https://bbs.csdn.net/topics/Temp.c_str(); //字串轉換
//取得發送的字串資料
BS=Temp.Length();
//BS=StrLen(SendData); //也可以用這種方式取得字串長度
//實際的發送動作
WriteFile(hComm,SendData,BS,&lrc,NULL); //實際發送資料
}
uj5u.com熱心網友回復:
SendData=https://bbs.csdn.net/topics/Temp.c_str();這樣的使用方式是嚴重不推薦用的。
字串轉十六進制,這樣:
String str = "9f";
DWORD dw = StrToInt("0x" + str);
uj5u.com熱心網友回復:
16進制轉換,跟妖哥學習,終于記下了StrToInt("0X" + str);uj5u.com熱心網友回復:
那么,斑竹,完整的代碼是不是這么寫(我試了一下,好像接收不到資料啊?):
void __fastcall TForm1::Button3Click(TObject *Sender)
{
AnsiString Temp;
//char *SendData;
int ln;
DWORD dw;
unsigned long lrc,BS;
if(hComm==0) return; //檢查Handle值
Temp=Memo1->Text; //取得發送的字串,就是要把Temp轉換成十六進制
//SendData=https://bbs.csdn.net/topics/Temp.c_str(); //字串轉換
//取得發送的字串資料
dw = StrToInt("0x" + Temp);
BS=dw.Length();
//BS=StrLen(SendData); //也可以用這種方式取得字串長度
//實際的發送動作
WriteFile(hComm,dw,BS,&lrc,NULL); //實際發送資料
}
uj5u.com熱心網友回復:
你先說清楚, 要發送的資料, 到底是 "9f" 兩個位元組,還是 0x9f 一個位元組的資料?uj5u.com熱心網友回復:
發送0x9f 一個位元組(十六進制數,轉換成二進制10011111八位一個位元組)的資料。代碼有錯嗎?
uj5u.com熱心網友回復:
哦,妖哥,我知道了,length()只能用在string型別里,不能用在DWORD dw上,那如果是這樣子的話,代碼里的:
dw = StrToInt("0x" + Temp);
BS=dw.Length();
//BS=StrLen(SendData); //也可以用這種方式取得字串長度
//實際的發送動作
WriteFile(hComm,dw,BS,&lrc,NULL); //實際發送資料
上面的BS=dw.Length()和WriteFile(hComm,dw,BS,&lrc,NULL)要怎么改呢?
uj5u.com熱心網友回復:
早說清楚嘛.AnsiString Temp = "9f";
byte bt = (byte)StrToInt("0x" + Temp);
WriteFile(hComm, &bt, 1, &lrc, NULL);
uj5u.com熱心網友回復:
學習了,StrToInt,字串轉整數uj5u.com熱心網友回復:
“轉換成十六進制值是0x9f”,樓主這么說,是外行話呀,轉換成整數唄,十六進制數只是一種書寫。
uj5u.com熱心網友回復:
貌似跟我一樣,做的是上位機的作業
uj5u.com熱心網友回復:
AnsiString Temp = "9f";
byte bt = (byte)StrToInt("0x" + Temp);
WriteFile(hComm, &bt, 1, &lrc, NULL);
妖哥的這個方法很好,但是如果
AnsiString Temp = "*9f";
轉換時就會出錯,可用下面的方法,帶容錯的
char* p = "a0";
char* str;//出錯時指向錯誤字符
long i = strtol(p, &str, 16);
ShowMessage(i);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/134343.html
標籤:基礎類
上一篇:有個程式,VC寫的,挑XP
