BCB之间各种数据类型之间的转换

本文介绍了在BCB环境中不同类型数据之间的转换方法,包括IntToStr将整数转为字符串,IntToHex将整数转为十六进制字符串,StrToInt将字符串转为整数,以及自定义的十六进制转十进制函数HexToInt。此外,还涉及了String到char和char到String的转换示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. IntToStr
    将整数转换为AnsiString字符串,函数原型如下:
    AnsiString __fastcall IntToStr(int Value);

  2. IntToHex
    将整数转换为十六进制字符串,函数原型如下:
    AnsiString __fastcall IntToHex(int Value, int Digits);
    eg:
    AnsiString s0,s1;
    char *Buf= new char[socket_size];
    Socket->ReceiveBuf(Buf,socket_size); //接收的是char型
    for(int i=0; i<socket_size; i++)
    {
    s1=IntToHex(Buf[i],2);
    s1=s1.SubString(s1.Length()-1,2);
    s0=s0+s1;
    }

  3. StrToInt
    将AnsiString字符串转换为整数值,如果不能进行转换,则产生EConvertError异常,
    函数原型如下:
    int __fastcall StrToInt(const AnsiString S);

4.StrToInt(“0x”+t)
将AnsiString字符串转换为16进制整数值,
eg:
for(int i=0;i<10;i++)
{
t = s.SubString(i*2+1,2);
Buffer[i] = StrToInt(“0x”+t); //转换成16进制的整数
Buffer[10]=Buffer[10]^StrToInt(“0x”+t);
}
ClientSocket1->Socket->SendBuf(Buffer,11);

或者: char Buffer[4];
Buffer[3] =0x00;
char EndPtr;
for(int i=0;i<3;i++)
{
t = s.SubString(i
2+1,2);
Buffer[i] = strtol(t.c_str(), &EndPtr, 16); //字符串转成字节
Buffer[3]=Buffer[3]^StrToInt(“0x”+t);
}
ClientSocket1->Socket->SendBuf(Buffer,4);
}

5.16进制转换成10进制的整数!!!需要自己写一个函数
unsigned int TDataModule1::HexToInt(AnsiString Str)
{
unsigned int nTemp=0;
for(int i = 1; i<=Str.Length(); i++)
{
int nDecNum;
switch(Str[i])
{
case ‘a’:
case ‘A’: nDecNum = 10; break;
case ‘b’:
case ‘B’: nDecNum = 11; break;
case ‘c’:
case ‘C’: nDecNum = 12; break;
case ‘d’:
case ‘D’: nDecNum = 13; break;
case ‘e’:
case ‘E’: nDecNum = 14; break;
case ‘f’:
case ‘F’: nDecNum = 15; break;
case ‘0’:
case ‘1’:
case ‘2’:
case ‘3’:
case ‘4’:
case ‘5’:
case ‘6’:
case ‘7’:
case ‘8’:
case ‘9’: nDecNum = Str[i] - ‘0’; break;
default: return 0;
}
nTemp += nDecNum * pow(16,Str.Length()-i);
}

return nTemp;
}
//-------------------------------------------------------------------------------------------
6.String类型转换成char类型:
eg:
String S=“abc”;
int Length=S. Length();
char *Buffer= new char[Length];
Buffer=S.c_str();
结果:
Buffer[0]=‘a’ , Buffer[1]=‘b’, Buffer[2]=‘c’
eg:
AnsiString Str=Edit1->Text;
char *MyStr = new char[Str.Length()+1];
strcpy(MyStr,Str.c_str());
NowStream->WriteBuffer(MyStr,strlen(MyStr));

7.char类型转换成String类型:
if (AData.Length > 0) {
AnsiString ls_str = “”;
int li_len = AData.Length;
for (int i = 0; i < li_len; i++)
ls_str = ls_str + (char)AData[i];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值