|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;0 q! |3 @7 j4 k7 z' f
UINT16 val_b;4 a. i8 M. s7 k" ^/ l/ X+ g
UINT8 a[2];
8 m: _1 ], V. F: ?& aUINT8 b[4];
5 |( A3 e- f# h+ ~UINT8 s[10]="123456789";
: B# R7 m: ^4 A; B1 R3 v....
! {9 I+ A, h+ S6 E4 u, l( Hmemcpy(a,s,2);
# m/ q8 o3 |* C5 g4 q& Y4 Smemcpy(b,&s[2],4);# t/ p' Q7 g5 k T, S6 D2 Y
val_a = stroul(a,0,16); ///字符转化成长整形
7 x9 R' _: K; Q& }( Bval_b = stroul(b,0,16);
9 E) h' s2 ], Kprintf("val_a=0x%02x",(short)val_a);0 @0 q; M8 P0 h7 b1 u% E% S7 Z
printf("val_b=0x%02x",val_b);3 B f& }' a& B! e0 F, s' R
....# |) K3 {7 ?4 u: M! A; x5 y" ~
3 _8 P- x% q( s) ~9 a4 D理论上应该得到的结果是:
4 W2 m T" a8 T' _0 Eval_a=0x12
- i0 ^/ L! F0 q* {+ wval_b=0x3456- M; O' N& ] p: r' T3 t" P
* _6 E! U `8 @* v1 E但是实际得到的结果却是: Q# _$ @9 L7 M
val_a=0x56
1 Q A8 e" N9 E9 v5 Oval_b=0x34560 t' N: h6 S# s8 Z/ S6 _0 W! M' n
0 H: O' K6 B' r! ?. m$ M) k1 @3 z
2 [8 |) G. C2 d) k) c( Q! s在vc6.0上得出的答案是正确的4 [" d) j% V" f+ L9 { g1 w
但是在我的8051单片机上得出的结果却是错误答案
3 {9 C7 ?+ S8 A9 g
8 D9 x( g5 M% P! F! m2 S但是我将程序如下修改,可以得到正确答案4 Q# Z. X" X% Z0 X* n% u
memcpy(a,s,2);
$ G; [% h& |+ s. z! X+ y+ x# pval_a = stroul(a,0,16); ///字符转化成长整形
; [% N: s2 G M5 X' `7 m8 P1 cprintf("val_a=0x%02x",(short)val_a);; I3 K: Y' L3 C, z" N) H8 e, f
memcpy(b,&s[2],4);
+ T; o2 z, T# D/ Ival_b = stroul(b,0,16);
9 T7 H0 c9 X9 }5 t# G- I, Hprintf("val_b=0x%02x",val_b);
; Y" D" S3 H+ o4 \
|. \, v$ t7 o5 v这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛2 o- D. ^5 W9 _0 Z+ t
8 x' I1 S6 C s1 h
|
|