我有一个代码,
char* bin2hexchar( const unsigned char& ibin, char* pbcd )
{
sprintf( pbcd, "%02X", ibin );
return pbcd;
}
问题是,ibin变量的值将变为零值。
请建议。
由于
答案 0 :(得分:11)
如果您的ibin
在此函数的调用者中更改为零值,则最可能的解释是缓冲区溢出。
我怀疑这可能是因为你传递的缓冲区因为第二个参数被定义了:
char buff[2];
和ibin
在堆栈上与它相邻。
%02X
格式字符串需要三个字节,两个用于字符,一个用于终止NUL字符。
即使那个不是特定情况,它仍然几乎肯定是缓冲区溢出。如果是这样,请发布调用此函数的代码以及相关变量的定义。