|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;3 V0 v$ J. y3 N, p" f1 q$ _
UINT16 val_b; k1 f5 c0 p; o4 @8 X# ^! R' z
UINT8 a[2];
# [- ?- x- z2 a' \3 e+ dUINT8 b[4];
( C. ]+ _* G) }8 x1 }/ ]: S& SUINT8 s[10]="123456789";
- E' o- S) D1 h: |2 Z. w...." S2 D g7 ~. r. ~% I& W
mEMCpy(a,s,2);
, t6 Q5 \, L1 A( r: i# V5 ^) M( p; Xmemcpy(b,&s[2],4);/ ~" o, j, o; B& |& A3 H- F! ]9 ?
val_a = stroul(a,0,16); ///字符转化成长整形
0 T$ I: S+ T1 {' j& ]5 i( h2 uval_b = stroul(b,0,16);
- @6 |& v0 r2 o% Y( q) D7 B( lprintf("val_a=0x%02x",(short)val_a);
0 ?3 K8 t/ K' u& B: o3 h. jprintf("val_b=0x%02x",val_b);
, K7 T- H: u: a: S$ E# Q" m( k2 Z$ o....+ z! X, E: O3 D
, o3 m# n: h0 H
理论上应该得到的结果是:
Z% [6 s1 L, N: D" ival_a=0x120 v! b9 h- H' Z/ X3 M
val_b=0x3456 {3 _+ L3 [8 E! [
3 J) h8 ?# c4 R9 }5 Z但是实际得到的结果却是
* J K# ^) ^/ t* Y0 [: {4 Nval_a=0x563 ~3 _! P& p/ Q4 o4 V V/ L8 H
val_b=0x3456
; M2 ^& e" X! w, n6 P8 q4 C
6 |, }3 T9 B! q% \+ K2 @ H6 X: t& P! V# k1 i
在vc6.0上得出的答案是正确的+ p4 \. t" x1 f1 T
但是在我的8051单片机上得出的结果却是错误答案& R1 q' o0 g( g: \. k
R4 {$ N0 b9 A& h. e$ Y) n
但是我将程序如下修改,可以得到正确答案6 L* Y9 v6 V W5 c- c" V& Q1 v
memcpy(a,s,2);+ W" M' M! P5 T
val_a = stroul(a,0,16); ///字符转化成长整形
# ^9 ^. Q+ }0 p$ Q& S! Wprintf("val_a=0x%02x",(short)val_a);
+ E( t0 i1 b) Q, ]2 G& O3 zmemcpy(b,&s[2],4);
4 L5 K9 L9 X! p. R# \val_b = stroul(b,0,16);
7 S, {: V% }; zprintf("val_b=0x%02x",val_b);3 j. v& x+ n5 a! S, R- F
5 J2 H) E' E1 Z0 m/ e
这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛' |! U8 r& R/ k& r6 a
) Z$ B. y" d# s+ u/ Q
|
|