|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;
1 N% Q8 J, @! hUINT16 val_b;
# O- r: `) o% }3 cUINT8 a[2];
9 r: I/ I- ~! G, p0 DUINT8 b[4];
1 D7 E( H, f; [" ?0 t, E- fUINT8 s[10]="123456789";/ o/ @" m3 S7 n7 j" O* {& r2 |
....
$ w& B ?$ N# _7 r& \$ kmemcpy(a,s,2);
$ l& `- b& g4 @0 t9 |9 Gmemcpy(b,&s[2],4);
, p# J. N; E, c+ Bval_a = stroul(a,0,16); ///字符转化成长整形9 [. I: l; q" b5 K7 v; N! @
val_b = stroul(b,0,16);+ s/ p5 g; Y/ L8 |2 @# X R
printf("val_a=0x%02x",(short)val_a);# a2 ^, n& n4 p, R, Q+ m, G
printf("val_b=0x%02x",val_b);; x9 ?' K4 _ W- M- [7 f
....
9 I8 r! M( P) G, j; F+ r& G6 i7 @) M
理论上应该得到的结果是:
0 d" _8 ?; C1 U% kval_a=0x12
9 h7 P, u" } ]- h2 zval_b=0x34560 ]9 a }0 e9 |9 ?% o/ b
) y# y6 n0 ]* h( U+ ~
但是实际得到的结果却是" Z8 C; z4 U) w* S
val_a=0x56 m0 G4 ^2 f; i2 U4 u2 B! Q/ ]
val_b=0x3456
/ L& N0 C' F2 N, p* }6 x% d/ V& }+ u# L
C- o" |# k. J3 Q' P/ P
在vc6.0上得出的答案是正确的
6 E) `( P* o: |& u7 |* b. x但是在我的8051单片机上得出的结果却是错误答案
! x4 j4 Q* z( l7 ]3 `
& k I" W: }3 @1 e! w% I但是我将程序如下修改,可以得到正确答案
+ `9 Q0 j5 k5 Xmemcpy(a,s,2);0 \# q% |+ [- S# X# J, y b
val_a = stroul(a,0,16); ///字符转化成长整形* X9 D, u# b: S9 A8 P6 t% j
printf("val_a=0x%02x",(short)val_a);6 E) ^& ~" G; K8 c' s r u- m
memcpy(b,&s[2],4);
7 ?' P0 l2 p2 pval_b = stroul(b,0,16);
( a! N* Q( d$ ^& E* k; Z# i8 V& [8 s7 Wprintf("val_b=0x%02x",val_b);& M9 W+ \9 l+ L8 [
0 w/ J( x1 V, _
这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛
% E7 \% p. `4 G! b; c6 t: o& ~; q
|
|