这个函数有啥问题,求高手解释?
CString*byteToHexStr(unsignedcharbyte_arr[],intarr_len){CString*hexstr=newCString();f...
CString *byteToHexStr(unsigned char byte_arr[], int arr_len)
{
CString *hexstr=new CString();
for (int i=0;i<arr_len;i++)
{
CString hex1;
CString hex2;
int value=byte_arr[i]; //直接将unsigned char赋值给整型的值,系统会正动强制转换
int v1=value/16;
int v2=value % 16;
//将商转成字母
if (v1>=0&&v1<=9)
hex1.Format("%s",(char)(48+v1));
else
hex1.Format("%s",(char)(55+v1));
//将余数转成字母
if (v2>=0&&v2<=9)
hex2.Format("%s",(char)(48+v2));
else
hex2.Format("%s",(char)(55+v2));
//将字母连接成串
(*hexstr)=(*hexstr)+hex1+hex2;
}
return hexstr;
} 展开
{
CString *hexstr=new CString();
for (int i=0;i<arr_len;i++)
{
CString hex1;
CString hex2;
int value=byte_arr[i]; //直接将unsigned char赋值给整型的值,系统会正动强制转换
int v1=value/16;
int v2=value % 16;
//将商转成字母
if (v1>=0&&v1<=9)
hex1.Format("%s",(char)(48+v1));
else
hex1.Format("%s",(char)(55+v1));
//将余数转成字母
if (v2>=0&&v2<=9)
hex2.Format("%s",(char)(48+v2));
else
hex2.Format("%s",(char)(55+v2));
//将字母连接成串
(*hexstr)=(*hexstr)+hex1+hex2;
}
return hexstr;
} 展开
2个回答
展开全部
int value=byte_arr[i]; //直接将unsigned char赋值给整型的值,系统会正动强制转换正槐
int v1=value/16;
int v2=value % 16;
你想做什么?byte_arr[i]是个字符,你转成int本来没什么,但是你的v1,v2要表达什么?假设你的byte_arr[i]是'0'字符,敬闷那么value是48,v1是3,v2是0,你的v2是很凑巧的0,但是v1的3是什么意思?
如果你要举稿友做10到16的转换,
int a = 0;
for(int i = 0; i < arr_len; i++)
{
a = a * 10 + (byte_arr[i] - 48);
}
int b = 0;
while(a > 0)
{
b = a % 16;
a = a / 16;
if(b < 10)
hex1.Format("%s",(char)(48+b));
else
hex1.Format("%s",(char)(65+b));
(*hexstr)= hex1 + (*hexstr); //这句不知道语法对不,是按你的写法写的
}
int v1=value/16;
int v2=value % 16;
你想做什么?byte_arr[i]是个字符,你转成int本来没什么,但是你的v1,v2要表达什么?假设你的byte_arr[i]是'0'字符,敬闷那么value是48,v1是3,v2是0,你的v2是很凑巧的0,但是v1的3是什么意思?
如果你要举稿友做10到16的转换,
int a = 0;
for(int i = 0; i < arr_len; i++)
{
a = a * 10 + (byte_arr[i] - 48);
}
int b = 0;
while(a > 0)
{
b = a % 16;
a = a / 16;
if(b < 10)
hex1.Format("%s",(char)(48+b));
else
hex1.Format("%s",(char)(65+b));
(*hexstr)= hex1 + (*hexstr); //这句不知道语法对不,是按你的写法写的
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询