|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;
. [2 X- k3 d2 \) SUINT16 val_b;! j+ Q2 j! G% I8 }( j9 v- Z
UINT8 a[2];
. t( G6 V$ }$ {+ D% N- i' F, K: B gUINT8 b[4];
5 d+ E9 S2 j9 B7 MUINT8 s[10]="123456789";
2 p8 t+ y& B7 z4 r% b: Y2 w....
: g! y4 K' d- e# k# @: [mEMCpy(a,s,2);1 [. A/ N3 Q! P( w6 Y
memcpy(b,&s[2],4);% q" L# P& H# x8 E
val_a = stroul(a,0,16); ///字符转化成长整形
( R* K" \" q3 w1 P$ bval_b = stroul(b,0,16);
% y3 y& l) k+ N2 R Q9 r5 Z. `1 u( L# Qprintf("val_a=0x%02x",(short)val_a);
7 @3 w& M) K8 h6 h% F7 @" ?6 Xprintf("val_b=0x%02x",val_b);/ g! I4 G7 q: O3 C7 K# }* n
....
0 A( N% s+ S+ S) Y9 K( w9 r# x' d6 B
理论上应该得到的结果是:$ l6 n% V5 W" d8 j
val_a=0x12
- Q7 g" F# F3 q3 s2 Y% Pval_b=0x3456+ z. e- E7 ?2 f" d( N9 b! y
; D: e. F! h( }- ^( O4 L% H8 I1 x$ ]但是实际得到的结果却是
0 v& v2 b a: n' t% f2 c& gval_a=0x560 j z% b2 _5 z j( _9 b
val_b=0x3456
! A) G- Q: T8 x& K3 m1 M9 ~2 t' {2 S
$ J+ }( g h5 ]5 F) ^在vc6.0上得出的答案是正确的
( o f4 S; c. B& t* O- O但是在我的8051单片机上得出的结果却是错误答案
+ {/ V, @: Y4 g d9 I' c+ `: y: S; j H+ b8 [
但是我将程序如下修改,可以得到正确答案
7 M, t) ?. v4 X! f" G, u3 Amemcpy(a,s,2);, T* }5 r0 F$ C: f, k; K( T: w e
val_a = stroul(a,0,16); ///字符转化成长整形" r5 X* c& s( ^0 [5 l1 M" L& N8 D
printf("val_a=0x%02x",(short)val_a);! o/ X( n1 T8 q/ W8 n7 t5 c5 `
memcpy(b,&s[2],4);; l/ a& [7 v: o' T
val_b = stroul(b,0,16);3 c& `1 Z, y* c' i @+ k8 N9 O
printf("val_b=0x%02x",val_b);* Q9 ~. j3 h+ V
* d: M v" l2 r0 y这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛$ A }5 _) L! h) P; h
: A _: H2 e7 K( { v% j |
|