admin 管理员组

文章数量: 1087139


2024年4月17日发(作者:java对变量名有哪些规定)

strtoul

strtoul (将字符串转换成无符号长整型数) 相关函数 atof,atoi,atol,

strtod,strtol 表头文件 #include 定义函数 unsigned long int

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 #include int main() { int a; char

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);


本文标签: 转换 字符串 进制