|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;
- }. }6 r5 W: F2 [" FUINT16 val_b;! P6 i& f* v: T, Z
UINT8 a[2];8 \' t8 h, v# ~2 A6 `+ L2 U4 r
UINT8 b[4];
4 U& K& L- N7 W P) E CUINT8 s[10]="123456789";
0 N, C. p$ A- l; f, _" S....
2 L8 M9 v1 R4 T& I2 ~$ `7 k+ vmemcpy(a,s,2);
! a) `+ Z- b- t7 Dmemcpy(b,&s[2],4);: D2 u' H6 n0 v% o$ k: |; w
val_a = stroul(a,0,16); ///字符转化成长整形9 E& J: p n: D
val_b = stroul(b,0,16);- {: B' r+ y/ l2 u
printf("val_a=0x%02x",(short)val_a);
0 W1 S2 Y [# u6 O3 }! W; o( M6 Gprintf("val_b=0x%02x",val_b);
+ z* z3 F, I, B2 ^3 u9 M7 [....
" Z9 P) G0 N9 D: Z7 z; G% ? N0 h
( K" |! e0 d/ F; b理论上应该得到的结果是:5 N {1 x/ Y+ M) X
val_a=0x12
" |* x, ~( Q* v) h; lval_b=0x3456
/ z! J, K: w' L2 E1 p
2 W9 \0 u7 ~( f; m但是实际得到的结果却是5 e8 ]: h' T2 c3 f
val_a=0x56
( F% w. U4 O$ @& Jval_b=0x3456( Q" x: W% t& N! ]) t
& M8 J8 f; X0 ~' [
0 E' B) e: {# d: ? f8 Z在vc6.0上得出的答案是正确的5 \3 n) n l6 e. Z* H8 z
但是在我的8051单片机上得出的结果却是错误答案
8 a) E" i+ `5 W$ ^& N% O
8 m- Y) M! R' P( g但是我将程序如下修改,可以得到正确答案0 L6 T2 }8 N9 T0 J/ N0 V$ }% G' {9 c
memcpy(a,s,2);
# X! ~6 x* `1 D- U V6 zval_a = stroul(a,0,16); ///字符转化成长整形( k7 L" @9 E$ a) z2 ^, A
printf("val_a=0x%02x",(short)val_a);
! C$ I' g0 p1 smemcpy(b,&s[2],4);
" n, c2 Q9 B/ `' M ^% B) y) Wval_b = stroul(b,0,16);
4 g3 Z) Q; B" g1 i+ pprintf("val_b=0x%02x",val_b);
% Y" l0 C# j4 r5 @3 {3 w7 I1 S/ n9 U
这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛' Q3 i* ^! b, s- Z" O6 A3 x t( e
: E. V, W! [% w! z6 q- Z; q5 X. S
|
|