现在有92283976 73b1c080 1e448b0 bd44dae6e 这一串是以字符串形式存储的数据
要怎么把她读取到一个整形的数组中用于进行计算呢!!!!
后面一段还是16进制的
ï¼1ï¼ä½¿ç¨å¸¸ç¨æ åå½æ°åºstdlibå½ä¸çå符串转æ¢å½æ°ï¼å¯ä»¥æåç§ç±»åçå符串转æ¢ä¸ºç¸åºç±»åçæ°åã
ï¼2ï¼ä½¿ç¨è¾å ¥è¾åºæ åå½æ°åºstdioå½ä¸çsscanfå½æ°ã
ç¨æ ååºä¸çsscanfå½æ°ï¼å ¶ä¸æ ¼å¼æ§å¶å符ç使ç¨æ¹æ³åscanfä¸è´ï¼%d读åè¿å¶æ´æ°ï¼%x读16è¿å¶æ´æ°ï¼ãä¾å¦ï¼char s[] = {"92283976 73b1c080 1e448b0 bd44dae6e"};int a, b, c, d;sscanf(s, "%d%x%x%x", &a, &b, &c, &d);åææ¯è¦ä¿è¯åç¬¦ä¸²æ ¼å¼åæ ¼å¼æ§å¶ç¬¦ä¸è´ï¼å¦ååæä¸ç¡®å®ãå¦å¤ï¼è¿ébd44dae6eå¨32ä½å¹³å°ä¸è¶ è¿intèå´ï¼å¦æè¦æ£ç¡®è¯»å ¥çè¯ï¼éè¦ä½¿ç¨long longï¼å¯¹åºæ ¼å¼æ§å¶å符æ¹ç¨Lxællxã
atof() å°å符串转æ¢ä¸ºå精度浮ç¹åå¼ï¼atoi() å°å符串转æ¢ä¸ºæ´åå¼ï¼atol() å°å符串转æ¢ä¸ºé¿æ´åå¼ï¼strtod() å°å符串转æ¢ä¸ºå精度浮ç¹åå¼ï¼å¹¶æ¥åä¸è½è¢«è½¬æ¢çææå©ä½æ°å ï¼strtol() å°å符串转æ¢ä¸ºé¿æ´å¼ï¼å¹¶æ¥åä¸è½è¢«è½¬æ¢çææå©ä½æ°å ï¼strtoul() å°å符串转æ¢ä¸ºæ 符å·é¿æ´åå¼ï¼å¹¶æ¥åä¸è½è¢«è½¬æ¢çææå©ä½æ°åã
有两种方式,一种是使用常用标准函数库stdlib当中的字符串转换函数,可以把各种类型的字符串转换为相应类型的数字;另外一种是使用输入输出标准函数库stdio当中的sscanf函数。
方法一:
下列函数可以将字符串转换为数字:
------------------------------------------------------------------------
函数名 作 用
------------------------------------------------------------------------
atof() 将字符串转换为双精度浮点型值
atoi() 将字符串转换为整型值
atol() 将字符串转换为长整型值
strtod() 将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字
strtol() 将字符串转换为长整值,并报告不能被转换的所有剩余数字
strtoul() 将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字
------------------------------------------------------------------------
方法二:
sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。
第二个参数可以是一个或多个 {%[*] [width] [{h | I | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}
注:
1、 * 亦可用于格式中, (即 %*d 和 %*s) 加了星号 (*) 表示跳过此数据不读入. (也就是不把此数据读入参数中)
2、{a|b|c}表示a,b,c中选一,[d],表示可以有d也可以没有d。
3、width表示读取宽度。
4、{h | l | I64 | L}:参数的size,通常h表示单字节size,I表示2字节 size,L表示4字节size(double例外),l64表示8字节size。
5、type :这就很多了,就是%s,%d之类。
6、特别的:%*[width] [{h | l | I64 | L}]type 表示满足该条件的被过滤掉,不会向目标参数中写入值。
参考资料:原创
本回答被提问者采纳