关于字符和16进制数的转换的问题
以下程序实现把 Edit 控件中的字符转换为 16进制的程序:
void __fastcall TForm1::hexClick(TObject *Sender)
{ int nBytes = 0;
AnsiString t,s = Edit_Send->Text.Trim(); //把edit 控件中的字符给 s
char Buffer[1000], *EndPtr;
while(s.Length()>0) //
{ int p = s.Pos(' ');
if(p>0)
{ t=s.SubString(1,p-1) ;
s = s.SubString(p+1,s.Length()).Trim();
Buffer[nBytes++] = strtol(t.c_str(), &EndPtr, 16);//十六进制字符串转成字节
}
else
{ t= s;
s = "" ;
Buffer[nBytes++] = strtol(t.c_str(), &EndPtr, 16);//十六进制字符串转成字节
}
}
}
当在edit 控件中输入字符 12 34 45 56 78 90 7 , 单步调试时Buffer数组中的 数据为
Buffer[0] = 0x12;
Buffer[2] = 0x34;
Buffer[3] = 0x45;
Buffer[4] = 0x56;
Buffer[5] = 0x78;
Buffer[6] = 0xFFFFFF90;
Buffer[6] = 0x07 ;
为什么 Buffer[6]的数值会变为 0xFFFFFF90, 而其它就没有变?
请大侠指教