AnsiString类不支持0x00

         以下代码是在单字节年代写的;对2009不一定适应。

 

         接收一串字节数据,可能包含0x00,使用String是不合适的,因为String是以0x00作为结束标记的。所以,只好使用原始方法:

       char * Received_Char;

     如果要使用String的功能,可以先转成BCD数,处理BCD String ,再转成AnsiString:

AnsiString TMenuForm::AnsiString_To_BCD( char * P_BCD, int length )
{
    AnsiString returnstring ;
    char high_char,low_char,temp;

    for( int i=0;i<length;i++ )
    {
        temp        =   *P_BCD++;
        high_char   =   (temp&0xf0)>>4;
        low_char    =   temp&0x0f;

        if(     (high_char>=0x00)
            &&  (high_char<=0x09)
          )
        {
            high_char+=0x30;
        }

        if(     (high_char>=0x0A)
            &&  (high_char<=0x0F)
          )
        {
            high_char+=0x37;
        }

        if(     (low_char>=0x00)
            &&  (low_char<=0x09)
          )
        {
            low_char+=0x30;
        }
        if(     (low_char>=0x0A)
            &&  (low_char<=0x0F)
          )
        {
            low_char+=0x37;
        }

        returnstring += AnsiString( high_char );
        returnstring += AnsiString( low_char );
    }
    return returnstring;
}
//---------------------------------------------------------------------------

AnsiString TMenuForm::BCD_To_AnsiString( AnsiString Data_Str )
{
    AnsiString DecodeStr;

    for( int i = 1;i <= Data_Str.Length();i += 2 )
    {
        AnsiString TempStr;
        TempStr         =   "0x"+Data_Str.SubString(i,2);
        try
        {
            TempStr     =   AnsiString( (char)(TempStr.ToInt()) );
            DecodeStr   +=  TempStr;
        }
        catch( ... )
        {
        }
    }
    return DecodeStr;
}
//---------------------------------------------------------------------------

     上述函数摘抄自网络,原创:未名.     

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值