|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;
: D8 H q$ G8 @# Z% nUINT16 val_b;
. f: ^5 S8 S3 H5 p7 Y" O3 H% g2 ^UINT8 a[2];& W4 k, c) ?9 Y5 t" u8 N
UINT8 b[4]; O0 {5 `- @1 k/ r5 }& v) m; \' k! G
UINT8 s[10]="123456789";
/ w; Y$ l: P0 I4 Q- A....2 @- v' X2 I7 F4 r3 i0 ] H* N( F
mEMCpy(a,s,2);6 T; [" L8 e! A z
memcpy(b,&s[2],4);; P* v5 v" E2 D& }8 r1 C" l
val_a = stroul(a,0,16); ///字符转化成长整形% |/ k2 L. o/ U* }
val_b = stroul(b,0,16);
4 {# Z5 d! ~, _, I' T8 t& jprintf("val_a=0x%02x",(short)val_a);0 q2 q. Q, @! ^0 i" l
printf("val_b=0x%02x",val_b);, A5 `$ L( }4 Q
....
* q. [+ N2 e" L/ U# W# ^ K$ a, J, M6 T$ x0 M) |! x
理论上应该得到的结果是:
& w3 X Y' B1 N. [3 _- T/ `9 Fval_a=0x12
0 N2 p4 P' r4 Q' Fval_b=0x34563 F* c2 l* T+ B. K. K8 X# @$ v" h
/ K; ]; R) h, |6 B- R0 j+ o6 t0 M3 ?但是实际得到的结果却是
/ P w9 C5 k4 g' Z8 W! Pval_a=0x567 u5 m, Q+ A. Z' X a0 B; e
val_b=0x34563 z2 O1 G' b3 h% k# ?% j
% \1 Q8 B) J' E% ^0 J3 o7 R/ q
; `' W8 @: u; w" o" p2 G
在vc6.0上得出的答案是正确的, p; m4 E6 a8 b0 Q5 x4 {' J9 [
但是在我的8051单片机上得出的结果却是错误答案& Z+ x, b. ~) v: w8 K( y3 N( u
( @1 i$ D* d6 V) N: P但是我将程序如下修改,可以得到正确答案
6 ?7 G$ P. |- M# Ememcpy(a,s,2);/ q- I2 Z( p# Y' y8 |3 k* }
val_a = stroul(a,0,16); ///字符转化成长整形2 n& b; o% O5 y$ H
printf("val_a=0x%02x",(short)val_a);
8 I" i1 I3 n- @memcpy(b,&s[2],4);+ L# e6 y. Z) }2 i1 X
val_b = stroul(b,0,16);
v+ X6 V5 }& s8 F# s& lprintf("val_b=0x%02x",val_b);
+ p- x. a% X' @$ ^$ U
) E* [9 O0 b2 d9 Q: h这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛
7 k: Y+ w, `0 B$ ~0 V0 |
7 ^, `5 j. m* T% f Y1 o6 _9 H |
|