|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;1 g% \% r$ A0 U: i0 M* |" ^1 X
UINT16 val_b; p$ p1 }% Q; K6 M7 c
UINT8 a[2];
6 Q% [+ v }$ e4 Q: lUINT8 b[4];
8 u. U( P" l3 O) b8 DUINT8 s[10]="123456789";9 Z9 G% }" g. c- W$ T& X
...." q) S) W. ~7 o
mEMCpy(a,s,2);& ^+ ?( ?9 H( Y6 G4 v; f% X
memcpy(b,&s[2],4);6 I- s1 y& T5 F5 }
val_a = stroul(a,0,16); ///字符转化成长整形
# |. O% m! w! h( I# D; d) K3 gval_b = stroul(b,0,16);
; K! F v$ y( tprintf("val_a=0x%02x",(short)val_a);+ @; y' C" W( S0 c9 K
printf("val_b=0x%02x",val_b);* ?7 A* r9 Q. x, v) M
....
& G7 g9 \, z) Y& L
3 U p6 I4 ?; G8 f4 w+ A理论上应该得到的结果是:
* [" V- M$ l; l0 v% P; Hval_a=0x127 z' v1 F% R! y, y. A* _
val_b=0x3456+ K p/ I) G# y" F
, e* ]. o7 q& g6 M9 s+ @. J* J
但是实际得到的结果却是 L2 _+ r1 B8 S) S
val_a=0x56
8 D$ G" m. O9 {* i1 `0 Q Eval_b=0x3456( V3 r, P9 }% J _0 g7 m
2 r8 O+ E2 d1 w
- k0 v) h5 X. W( G2 F8 h/ i; A: ]' N
在vc6.0上得出的答案是正确的
3 y/ l5 J' ?2 J& [/ y- D但是在我的8051单片机上得出的结果却是错误答案
4 x9 r2 p6 g" {* J2 {9 f7 u3 Y! k4 ]- M
但是我将程序如下修改,可以得到正确答案 b; f: X0 T) m( h3 N
memcpy(a,s,2);, C0 u4 E& u o5 C+ ?( p7 j
val_a = stroul(a,0,16); ///字符转化成长整形
- m6 Y7 |7 D" |& z6 O" m; P& Kprintf("val_a=0x%02x",(short)val_a);/ l0 O# [3 x3 T2 A3 x) [
memcpy(b,&s[2],4);& X/ T. ?& h( c" h2 g
val_b = stroul(b,0,16);
+ T& I- W7 }+ S4 z z' r" sprintf("val_b=0x%02x",val_b);# q" l# h' h$ }$ w! p
4 }/ S3 T8 s" s这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛# b' u1 T$ m: N! S1 Z& `8 I
, l0 s9 `2 r& ~# A" I0 \0 u6 J |
|