admin 管理员组文章数量: 1087139
2024年4月17日发(作者:java对变量名有哪些规定)
strtoul
strtoul (将字符串转换成无符号长整型数) 相关函数 atof,atoi,atol,
strtod,strtol 表头文件 #include
strtoul(const char *nptr,char **endptr,int base); 函数说明 strtoul()会将参数nptr
字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参
数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16
进制数等。当base值为0时则是采用10进制做转换,但遇到如'0x'前置字符则会使用16
进制做转换。一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到
遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('')结束转换,并将
结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指
针由endptr返回。 返回值 返回转换后的长整型数,否则返回ERANGE并将
错误代码存入errno中。 附加说明 ERANGE指定的转换字符串超出合法范围。
范例 参考strtol() 例子:将十六进制 0xFF,转换成 10进制,得到 255
#include
pNum[]="0xFF"; a=strtoul(pNum,0,16); printf("%dn",a); return 0; }
————输出 255
如何将string型字符串两位两位转化为16进制数
Win2000下使用VC6开发W32DLL
有string型字符串strC
要将其两位转化,得到16进制数,再赋给apdu如memcpy(apdu, "x00x84x00x00x08
",apdu_len)
如
strC= " "时转化为 "x00x84x00x00x08 "
我这样做
char sendbuf[200];
unsigned char apdu[256];
int apdu_len;
sendbuf[0]= 'x00 ';
sendbuf[1]= 'x84 ';
sendbuf[2]= 'x00 ';
sendbuf[3]= 'x00 ';
sendbuf[4]= 'x08 ';
apdu_len=5;
memcpy(apdu,sendbuf,apdu_len);//两条语句效果一样。
//memcpy(apdu, "x00x84x00x00x08 ",apdu_len);//两条语句效果一样。
现在strC不一定是 " "的情况下如何转换,如:strC= " "时转化为
"x01x53x00x00x04 ",并使“memcpy(apdu,sendbuf,apdu_len)”和“memcpy(apdu,
"x01x53x00x00x04 ",apdu_len)”效果一样。
该如何做。
string strC= " ";
char sendbuf[10];
int apdu_len = () / 2;
for(int i = 0; i < apdu_len ; i++)
{
string stmp = (i*2, 2);
sendbuf[i] = strtoul(stmp.c_str(), NULL, 16);
}
memcpy(apdu,sendbuf,apdu_len);
版权声明:本文标题:strtoul将字符串转成16进制数 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1713357833a630724.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论