AnsiString类不支持0x00
来源:互联网 发布:新手学编程先学什么 编辑:程序博客网 时间:2024/04/29 06:18
以下代码是在单字节年代写的;对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;
}
//---------------------------------------------------------------------------
上述函数摘抄自网络,原创:未名.
- AnsiString类不支持0x00
- AnsiString类
- AnsiString类
- AnsiString类
- AnsiString类
- AnsiString类
- 0x00 -----0xFF
- 0x00和'0'
- 0x00翻转字符串
- 逆向工程 0x00
- Pygame学习0x00
- C++ Builder AnsiString 类
- [资料整理]AnsiString类
- 0x00 C编程风格
- 0x00 Grails 入门笔记
- 程序员搞笑集锦0X00
- Flash写特性0xFF---->0x00
- 0x00 vs ASP file upload scripts
- 数据访问层的使用方法
- 什刹海游记
- Javascript 事件全集
- 关闭139和445端口的方法
- 过滤数字
- AnsiString类不支持0x00
- 跟我一起写 Makefile
- 特殊用途
- 不缓存
- 正则匹配
- 数据访问层的结构图和源代码下载。
- 取得控件得绝对位置
- VB和SQL两种不同的连接方式,不能弄混了,不然再好的程
- 最小化,最大化,关闭