|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
UINT8 val_a;% x& G3 |% s: j1 s# e+ O! l
UINT16 val_b;
) [ k# z' N' [# [3 Z& l0 gUINT8 a[2];
9 w; Q: K# [8 O$ N* oUINT8 b[4];
Q1 {# x, [/ JUINT8 s[10]="123456789";9 S7 S$ U, j# o( |- B* R
...." @ o7 h# ^ b! C0 R w
memcpy(a,s,2);
# H( B: W% r, Q+ }$ Tmemcpy(b,&s[2],4);
3 d+ C' p- p5 U$ x: U8 J$ J9 Qval_a = stroul(a,0,16); ///字符转化成长整形: H( `) y: G9 h5 L9 m, p$ t
val_b = stroul(b,0,16);
. m# P, G, _8 w, c) {( rprintf("val_a=0x%02x",(short)val_a);
+ B1 F1 b3 b9 I# w; F4 Bprintf("val_b=0x%02x",val_b);
W. L; o$ {, R- a% w....
! W: \ N; t9 L( F( q5 O/ W
4 {; T) S9 `- p理论上应该得到的结果是:
+ t* V5 c2 O8 \val_a=0x12! [" o9 f2 b7 y! ~7 c0 e Z9 C
val_b=0x34567 w& D% R6 h u- X) y' q
/ I: M' Z6 j2 e Z: }但是实际得到的结果却是$ n: V8 H& a5 U' `. i) U9 Z9 y
val_a=0x56# |! j& _! U8 a; Q
val_b=0x3456 B, w( x" W/ q
, I8 @' A" z8 n7 Z6 Q) x8 i E" W( l* C! X9 `& b! G
在vc6.0上得出的答案是正确的
% }8 m' a* A6 ?! e# E: ^$ T但是在我的8051单片机上得出的结果却是错误答案
4 t5 {7 v+ i) X; H: O0 |( @ q
* B; C/ J; I# v但是我将程序如下修改,可以得到正确答案' o8 J1 P! l s' [6 y3 W* {# G0 Q
memcpy(a,s,2); N( Q2 ^* L" I U- x( l4 ]- ]1 o/ X
val_a = stroul(a,0,16); ///字符转化成长整形
6 O) v8 @4 N% j+ c) lprintf("val_a=0x%02x",(short)val_a);1 O n4 `5 B g
memcpy(b,&s[2],4);6 h+ w$ Y4 L2 {. {. l0 \
val_b = stroul(b,0,16);; b* \* X# r2 \2 `! B
printf("val_b=0x%02x",val_b);0 G) d1 Z+ R6 s# d. E) g+ `* a- A
: L8 N- \8 h( p* C# \- }
这样就可以得出原因就是被覆盖了,但是我不知道为什么会被覆盖,有人跟我说明显会被覆盖的,但是我真心不知道,为毛: V! t! U1 \0 `2 H+ b' X C
; b4 w; K5 y8 m- p/ T- n5 L& n
|
|