|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;
- g/ I) @/ \7 D* ]' uUINT16 val_b;9 D; E% X" u, e
UINT8 a[2];* p% p9 M ]5 b# \0 G, o$ k. Y
UINT8 b[4];; I' X1 r9 |2 s8 U2 k4 [& Y
UINT8 s[10]="123456789";* |. r* |- k+ c' X
....8 x' J& C7 m1 f
mEMCpy(a,s,2);/ \" l! E9 J7 ?: S$ W% @
memcpy(b,&s[2],4);2 e7 ?6 F& S- y9 }) ~- H4 \3 q
val_a = stroul(a,0,16); ///字符转化成长整形
8 a d( i' f6 U+ cval_b = stroul(b,0,16);
( _ z& H) S8 I8 \ i+ _7 Bprintf("val_a=0x%02x",(short)val_a);
+ E6 H0 G3 P+ T2 [7 b* w! nprintf("val_b=0x%02x",val_b);
) L7 ~+ X5 U* U....
; f' P2 ^* Z* B' u3 v, Y2 V* b1 ~1 E/ S) [0 C
理论上应该得到的结果是:& m. N/ W+ Q# |
val_a=0x128 f0 P5 }/ l+ f/ j1 I1 c' ]
val_b=0x3456
) D& E$ q2 p7 ~3 [* \) f6 ]* j, |7 N1 y; `, l
但是实际得到的结果却是/ E- o/ [6 }$ h6 k
val_a=0x56& u( I1 I. w' I5 o4 m
val_b=0x3456' M2 } T9 G. A) I, d7 ~: a
/ S+ j) {- K' [! T% F
, d" F) ]; F. @在vc6.0上得出的答案是正确的; J% j, i% X! f
但是在我的8051单片机上得出的结果却是错误答案
5 r8 V9 c- [( R8 p( l& Z+ c+ Y" _5 B+ i J
但是我将程序如下修改,可以得到正确答案$ r5 X% u* n- O/ \$ [4 E( b- @. R+ d
memcpy(a,s,2);
2 u$ N9 A& R: t- m/ [4 ]val_a = stroul(a,0,16); ///字符转化成长整形
- l4 @8 X7 H; {$ }6 vprintf("val_a=0x%02x",(short)val_a);9 _% v1 [) f3 ]" ^% O# r7 G/ ]
memcpy(b,&s[2],4);8 W# {$ ]4 u( _. w/ ]
val_b = stroul(b,0,16);
2 [7 H# C% l0 W. P$ D& W* [0 Oprintf("val_b=0x%02x",val_b);
* {' u" L. ^2 ~! L) m1 U5 { k+ b4 O# Q
这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛( m* x: k+ K v' I
/ I$ o9 r+ A+ `/ M
|
|