|
% o4 ~2 v5 M, b# y1 }/*$PAGE*/$ s. z2 W+ i! W0 z& I9 I% F
/*
+ o1 @; o( ^, \- z) x, ^0 E*********************************************************************************************************
( M! a3 H4 p5 C* HexToStr
( A9 X7 g0 @" [. N( Q* Functions : Hex转字符串
- g; E8 W5 d' p3 Q2 v/ _5 s; x, F* n*
+ j) D7 [- Q7 S5 |2 A) I4 L* Arguments : pSrc 被转换的Hex地址
4 O; j- B0 q8 D- b9 N0 M* pDst 被转换后的字符串地址
y3 t7 x( U/ w* LimitLen 目的地址空间限制长度 & j& n' o* A% k8 c4 @
* , f$ C: L* h* @6 t9 I/ L2 W
* Returns : 无5 ^( A% u; a( h5 k( G
*********************************************************************************************************( I* O& @4 y$ s& X6 \
*/; l! J( ]' D, ]
CPU_VOID HexToStr(CPU_VOID *pDst, CPU_VOID *pSrc, CPU_INT16U LimitLen)
! B4 S3 U$ q% u b: C/ S{* a" [* K( I: H9 z0 S. f
CPU_INT16U i = 0;# F& [ N3 j l/ \
CPU_INT08U ddl, ddh;! u2 d! t2 e# d2 t# l
CPU_INT08U *pSrcBuff = (CPU_INT08U*)pSrc;
) D( R5 E1 b+ [ CPU_INT08U *pDstBuff = (CPU_INT08U*)pDst;
9 c; \/ @5 ~- _9 Q3 Y4 l , h5 K: U( l: o, ~3 c5 N
CPU_INT16U ValidLen = LimitLen >> 1;" n: y6 |6 M" L
. `$ q8 X- I* n$ @% {; q0 A8 B% {
for (i = 0; i < ValidLen; i++)3 k! d# r3 B9 a
{, ?0 Z: _3 F9 l/ r* V7 k( L7 x! n& c4 C
ddh = 48 + pSrcBuff[i] / 16;
: z" X k. o, ~) T7 M; Y( F, A ddl = 48 + pSrcBuff[i] % 16;
' U4 s0 B* A4 P. d' q( i * I+ s. q8 c3 W: `
if (ddh > 57)
0 S3 f* C8 _! G& z, r {0 v3 c% Y' V [, E% [5 m E
ddh = ddh + 7; ^* K' X) t% Y4 g1 Q8 z- p
}
/ H/ B3 q+ h/ @3 d if (ddl > 57)
% }" U$ P) ]& m {4 _& \1 Y' b* B" x6 N( Z9 h
ddl = ddl + 7;
( ~) J) t r6 y% ? }
4 |& f' j; M& I/ {; f/ r/ N & B+ d; | n' ]; L
pDstBuff[i * 2] = ddh;% M b- J, b4 H; Z. y* ~
pDstBuff[i * 2 + 1] = ddl;* J% B8 M5 S4 m" X$ N) j0 _
}
; P3 O q: R. ^+ N
* J( L$ v1 G' G1 u8 ^ if (LimitLen % 2 != 0)
5 I# f# K, E$ W pDstBuff[LimitLen * 2] = '\0';
1 h" M A h' d, s3 t9 p}: Q" y# r& o$ m1 q# r! E
自用代码,可以参考 |
|