[C++]BCD碼轉換問題
来源:互联网 发布:数据类型 js 编辑:程序博客网 时间:2024/04/30 08:14
//char:String.c_str()
AnsiString TForm1::BCD_to_AnsiString(char * P_BCD, int length)
{
//TODO: Add your source code here
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);
returnstring += " ";
}
return returnstring;
}
//-------------------------------------------------------------------------------------------------------------------------
AnsiString __fastcall 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;
}
//------------------------------------------------------------------------------------------------------------------------------------------
//十進制轉為BCD
int __fastcall TForm1::ConvertBCD(int dnum)
{
int bcdval=0;
if( dnum>9999 || dnum < 0 ) return -1;
bcdval = (( (dnum/1000)*16+(dnum%1000)/100)*16+(dnum%100)/10 )*16 + dnum%10;
return bcdval;
}
//------------------------------------------------------------------------------------------------------------------------------------------
//BCD轉為十進制
StrToInt("0x"+BCD_String);
//--------------------------------------------------------------------------------------------------------------------------------------------
再附一個時間延遲函數
//---------------------------------------------------------------------------
//時間延遲函數,單位是毫秒
void __fastcall TForm1::Delay(DWORD DT)
{
DWORD BeginTime;
BeginTime = GetTickCount();
do
{
Application->ProcessMessages();
}while( GetTickCount() - BeginTime <= DT );
}
//---------------------------------------------------------------------------
- [C++]BCD碼轉換問題
- BCD
- BCD
- BCD
- bcd
- BCD与ASCII码互转-C语言实现
- BCD码转十进制C语言实现
- c 十进制、十六进制和BCD的相互转换
- C语言之linux内核--BCD码转二进制与二进制转BCD码(笔试经典)
- BCD码
- bcd码
- BCD代码
- BCD是什么?
- BCD码
- BCD码
- BCD码
- BCD码
- BCD编码
- Java与C++的浅层次区别
- avr的应用程序启动我都做了啥(head.S)
- Junit 概述
- DynamicResource与StaticResource的区别
- dojo.string模块详述
- [C++]BCD碼轉換問題
- java 查看JDK中底层源码
- UML中几种类间关系总结
- 在使用JavaBean时遇到的问题:The value for the useBean class attribute is invalid
- 命令行操作系统Linux和Unix中 最常用的网络命令
- 求有向面积(多边形面积)
- C++ 基础总结
- 黑客网络文章整理
- 黑客经验