|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;
2 v9 P% q& x: P$ C" ?* o% P6 bUINT16 val_b;" d: e5 @! n# _' L9 `% s, @7 \, e
UINT8 a[2];; w) X0 C2 _- `, k, o; R# H2 t% ]
UINT8 b[4];
6 ~0 I) _* }; J1 r rUINT8 s[10]="123456789";
3 d$ g' J+ o3 `+ k* A: }....
T. o" n! F) { K0 R& @! Tmemcpy(a,s,2);
* u! m! Q4 f7 k' J( c, K$ Wmemcpy(b,&s[2],4);
+ z" c, T4 S* G5 cval_a = stroul(a,0,16); ///字符转化成长整形
6 L! X3 Y* e$ t" Z- g) @( D1 B, p: }val_b = stroul(b,0,16);+ P$ L8 ~, V! e) u1 z* x! p) U
printf("val_a=0x%02x",(short)val_a);/ ]# `8 f: V3 W8 M
printf("val_b=0x%02x",val_b);
0 D: Q1 q. b, l. H....$ [. P1 W6 ?" ]: H* Q& d
( `+ _# ?8 a; V( e+ O& Z( B理论上应该得到的结果是:
7 b% s$ B7 [5 Ival_a=0x12
: b: B) m! E/ R* L7 Z0 B- `val_b=0x3456
) A1 \3 i l+ r7 R* \) N8 X/ l: r
+ ^) h! {5 Z" m& `9 C8 a# h+ A但是实际得到的结果却是$ \& O3 n# B9 F
val_a=0x567 |; q7 `- [! v: b$ f3 r
val_b=0x3456
% h/ j; _' L; C F
" N7 `0 ]2 q5 M5 h8 h! I. D( u' D
0 d* {0 ~! P1 B& H% |# z; D4 C在vc6.0上得出的答案是正确的
" v9 e8 e! \- M! B7 D但是在我的8051单片机上得出的结果却是错误答案
7 H& H# p( |/ z$ E4 P" W% f2 |+ T( ?" P1 f, O
但是我将程序如下修改,可以得到正确答案
4 k6 e2 |# n/ I) M" ememcpy(a,s,2);
) E7 b$ d9 H; E& j$ Xval_a = stroul(a,0,16); ///字符转化成长整形6 B2 z o7 ?/ M2 U3 A1 M
printf("val_a=0x%02x",(short)val_a);2 |) K& \6 Q5 r0 c! ]
memcpy(b,&s[2],4);3 Y& V' ?4 d4 E( M
val_b = stroul(b,0,16);- S" z* q* H' I: w4 p$ N: s; x
printf("val_b=0x%02x",val_b);. p. } J6 b! B" |; b- m8 @
0 F8 t/ a, M7 w2 Z7 x
这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛4 P+ f8 q8 N$ }' T: X
) o) q$ A$ H: E3 Z5 D/ H
|
|