|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;
* n( n2 i& I: Y1 g& M# T! \! @UINT16 val_b;# m+ h2 `5 v; e' c9 l/ `
UINT8 a[2];4 U8 A$ j5 s' \& Z% }
UINT8 b[4];5 I" E, j. y2 \ J; r2 j
UINT8 s[10]="123456789";0 G5 _6 G3 _6 v/ c# H. e
....7 T" ~8 p$ h6 ^! P; R$ t u4 \6 H
mEMCpy(a,s,2);/ x4 W7 V* Z; u2 K/ E
memcpy(b,&s[2],4);
( b" d: W8 `: O6 O* @) Oval_a = stroul(a,0,16); ///字符转化成长整形! c- I) U( G+ J- W% x0 C
val_b = stroul(b,0,16);
; e+ e/ J4 X, X* |$ D' M& z' Wprintf("val_a=0x%02x",(short)val_a);# P! g- m/ o* w1 g/ H' Z Y
printf("val_b=0x%02x",val_b);
, Q! j2 Q2 Q( K. }& G....
& G- W0 c1 L6 _/ ?% [1 I
% Y Y) k& X4 n' q9 A4 K! ]理论上应该得到的结果是:
* j6 M, V5 L1 W9 J" L3 `val_a=0x12/ ^. Z) U3 C: m. J+ {
val_b=0x34561 F0 x* _) p8 b8 X4 Q/ R
1 X8 U1 U: ^( v但是实际得到的结果却是
) p) A$ d. u( v4 {/ W0 ?- w) r0 Sval_a=0x567 J9 h: {, k- @, M% D
val_b=0x3456: C) u1 V0 _( D @; D$ c
, K+ w# F4 W9 p8 {
' J+ N& ?2 J+ t在vc6.0上得出的答案是正确的
& Q9 m; L) F4 c3 s但是在我的8051单片机上得出的结果却是错误答案( [$ X7 A3 J: `+ B9 |; g+ ^, T
1 X* j5 x0 a! z3 o; _
但是我将程序如下修改,可以得到正确答案9 q8 V) q/ L. S* p! e
memcpy(a,s,2);
3 i& O( R- O; Nval_a = stroul(a,0,16); ///字符转化成长整形/ b: H0 {7 A# c. L! ^4 F
printf("val_a=0x%02x",(short)val_a);
; q2 ]/ F; G; `: pmemcpy(b,&s[2],4);$ F6 y7 x* a2 R. D6 f; J
val_b = stroul(b,0,16);( f. j* }( D! `" |1 p: T0 i* x6 {& x9 n$ J
printf("val_b=0x%02x",val_b);7 S7 y: S& e$ X% g$ w) D8 B- N
& y# e! ~% o5 T0 I, t这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛8 F# K" c0 I/ K0 X, ~% j/ e
+ R9 K8 v2 Z/ S- \* c
|
|