|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;% w0 U& A, Y% p( n" s
UINT16 val_b;! [3 t; W% A" h3 \8 I H
UINT8 a[2];
, v- @' }6 b5 Q% n* f1 @UINT8 b[4];1 X. ]: R0 I. ]2 r
UINT8 s[10]="123456789";
# E) m, @ e8 X: d( z....1 Q/ Y. U+ V; b- Z- I0 `
mEMCpy(a,s,2); \ ^# M2 v3 |2 V$ E9 `, k+ q
memcpy(b,&s[2],4);. t+ a2 y+ i5 h, s
val_a = stroul(a,0,16); ///字符转化成长整形; `; ]) C8 a: I9 ~/ T9 a" A0 X7 Z
val_b = stroul(b,0,16);
$ e( s2 z& {6 k1 h! Vprintf("val_a=0x%02x",(short)val_a);
) J! B" W* q2 w. D1 O4 c( S- Oprintf("val_b=0x%02x",val_b);6 X7 E& f% H4 L$ s' k9 @
....
t+ M& i) g0 e7 k+ ~, R. G
/ U" A( g0 H8 d) E1 ?理论上应该得到的结果是:
3 j% b1 l2 x, t, }& w! {& h7 nval_a=0x12
- @* l7 p+ D2 \val_b=0x3456
0 x3 `/ `' B) d& G8 W7 m6 M! G
但是实际得到的结果却是
( y8 G8 a* l9 b& q. G+ S3 @val_a=0x56
9 a3 M3 v' ?+ Aval_b=0x34562 E. R3 ~: r# u# V4 r+ m; V6 O
" Y* A, s1 } H3 ^- \* e
3 t/ S4 |' H4 `& F2 ^, b在vc6.0上得出的答案是正确的: j& m$ C9 p8 A( Z7 U) J: n2 c
但是在我的8051单片机上得出的结果却是错误答案
* z1 r1 i' b. }: F0 n' f
. q2 T7 v$ J# O0 N$ X: |0 A6 q5 G但是我将程序如下修改,可以得到正确答案$ [; w6 g* \: q, v* z
memcpy(a,s,2);6 A, W" e! K! S
val_a = stroul(a,0,16); ///字符转化成长整形( l) \, U( U2 U- Q3 M7 B5 H
printf("val_a=0x%02x",(short)val_a);) E% j3 V% j, N# e9 l A0 Y
memcpy(b,&s[2],4);+ v- @( h2 n7 }. q
val_b = stroul(b,0,16);
7 P# p, G$ s+ U2 a( {printf("val_b=0x%02x",val_b);
$ w( h. |$ V; t* c" U' X7 [: g$ ~7 s- _/ r3 N8 _% w# i+ d) [
这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛
7 `) g- P* x& b: k' z) X* z, X% D7 ]- c2 h
|
|