|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;
- k! _ f, z" @) GUINT16 val_b;
8 i, Q/ C( Q: j; U- |UINT8 a[2];8 Y$ U& {" r1 H- [3 t' W
UINT8 b[4];) } C) q+ W0 y0 ^6 e2 R, a) W0 x: m
UINT8 s[10]="123456789";
: P$ A0 o+ L5 B4 b! v' l- T....
" T( g ~6 V) S2 Y6 g3 h4 `8 \ zmemcpy(a,s,2);
# x/ j4 Y! d# ^3 }3 A4 qmemcpy(b,&s[2],4);" L) R* ^5 n- L+ x& \' p3 s; f
val_a = stroul(a,0,16); ///字符转化成长整形
0 w1 P+ l+ l, w6 Q i8 L1 g. Jval_b = stroul(b,0,16);
) J( k' s. Z! K0 J/ I. j8 q& tprintf("val_a=0x%02x",(short)val_a);* \; m+ ~2 o' N: ]8 a
printf("val_b=0x%02x",val_b);! g: B3 p' ~" g6 N* Q" Q0 U
....
+ v) M) `, n" F7 k% x5 P( @7 A4 M, g& ~0 Q4 F5 z) [
理论上应该得到的结果是:
. K; W4 {: K: a* oval_a=0x12
0 F. a* Z) u/ t; S9 P' P: l3 vval_b=0x3456
6 c' U; c$ J4 B' |: L; `) F9 M; `3 I$ r( d7 v$ X* x2 Z
但是实际得到的结果却是% `% k) l1 ?- D$ c* P) [1 v- P
val_a=0x56 n# x! I1 a- a7 K; |
val_b=0x34568 D4 _9 x- e# R+ s0 {5 E& {5 N
# f: a6 F5 U) T
* H) a! o1 R( k' c6 o在vc6.0上得出的答案是正确的
" S0 c3 D% R+ V1 \! H但是在我的8051单片机上得出的结果却是错误答案
5 y0 _9 H6 x) l0 E
2 X. f. S+ H' |! q2 I但是我将程序如下修改,可以得到正确答案, l# D7 ~0 P0 k# p, u' g Q
memcpy(a,s,2);. l$ | b" d1 i# \5 V$ }
val_a = stroul(a,0,16); ///字符转化成长整形
( O& U. h3 d/ ~0 \. ^! Jprintf("val_a=0x%02x",(short)val_a);
. `) Y. b1 e- X) Y' gmemcpy(b,&s[2],4);; r, j. D6 f& |! t: t6 C, ~
val_b = stroul(b,0,16);9 j0 X$ p$ S: h( ]( ]
printf("val_b=0x%02x",val_b);6 g: r3 r% A: ?
7 w- L6 V' H5 R! P这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛1 P; ~. Q7 Y# x6 v
$ X4 K& h& T- R+ |! y
|
|