|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;+ x0 z' ?: p5 M9 T$ B
UINT16 val_b;
2 [ ^* R$ m( j" qUINT8 a[2];
4 w# H) P/ ~, Z( M) I1 ?UINT8 b[4];$ b `1 M: Y4 ?. \9 K
UINT8 s[10]="123456789";. i2 y/ `% L! F3 ?' }/ M
....- F7 N0 s8 N+ B8 I: }
mEMCpy(a,s,2);& x2 i; z# M1 K. L
memcpy(b,&s[2],4);
0 u. a+ k2 |# `* F/ \val_a = stroul(a,0,16); ///字符转化成长整形
2 H" P `. I; R* |, _4 I Kval_b = stroul(b,0,16);
" D: }( }9 v" d8 v b6 s! Nprintf("val_a=0x%02x",(short)val_a);* ?" N* H$ a7 n) u
printf("val_b=0x%02x",val_b);! B) b6 B0 ?8 A3 |: O1 t4 R5 Y: }
....: Q. P3 W$ t" L- s1 b* |
5 m* p7 E6 j# F1 ~. i2 _/ L理论上应该得到的结果是:
6 M. U1 ~6 \$ \. ?' L0 T' Mval_a=0x12* D6 x7 r3 Q4 i3 t
val_b=0x3456
& f7 F4 R- }7 ~* i/ P( M* w
. l# c0 Y% u, E( \/ } U4 s+ C但是实际得到的结果却是
3 k' t$ O# J! x/ mval_a=0x56 J7 s8 h* T7 E. V
val_b=0x3456
, d" \. s$ ^" B
% H: U1 {/ P+ r2 u9 A: G) s0 T A$ t/ c( X) _3 I' a
在vc6.0上得出的答案是正确的
3 A3 I) C2 l$ {: R" ~2 p2 D但是在我的8051单片机上得出的结果却是错误答案8 T5 H, k7 i4 P, n8 W9 O1 ^5 V- I8 k
% N+ x j: d9 \1 \% G1 j2 z# P但是我将程序如下修改,可以得到正确答案 K" h6 j: W; D: g
memcpy(a,s,2);
. q2 p3 c* H; A# m# A# l% C( g* zval_a = stroul(a,0,16); ///字符转化成长整形
: E! |/ U: J6 Zprintf("val_a=0x%02x",(short)val_a);
) ^8 \% y) Z2 |" v# U! g2 J$ {0 Gmemcpy(b,&s[2],4);
; m' c" D; R& O' Aval_b = stroul(b,0,16);
2 p9 h$ L2 D) n9 B6 j4 Tprintf("val_b=0x%02x",val_b);
8 X4 ~9 i1 Z) i% t& ]& x
- N7 g$ n" f1 g$ C ]3 L' J- `! Y- @这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛
# S! E% f% \* J' \# }% ?; l
9 D$ b( O% [1 B; d% B& T9 b |
|