找回密码
 注册
关于网站域名变更的通知
查看: 265|回复: 2
打印 上一主题 下一主题

c51单片机编程将数组转化为字符串怎么编程?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-6 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在51单片机中比如{1,2,3,4,5,6}转化为“123456”这种字符串 怎么编程? ; p0 ?* y/ v% K+ r7 |" B# l

该用户从未签到

2#
发表于 2021-12-6 11:15 | 只看该作者
3 R8 G/ R$ o! B& B* t# @
楼主想把数组变成字符串干嘛用呢1 k9 J' ]: `9 U2 y
(我在搜百度时,发现我们论坛这个问题也没回答,所以就此发表一点个人见解)
' G; H' G8 S8 W" ~/ K. [我在lcd12864里:打印一串字符用         LCD12864_write_word(变量);% E  ~5 D9 B0 X' s+ j
比如 LCD12864_write_word("00");2 _+ [2 I4 I/ }1 w, l& j( T! ?( h& I
变量当然可以是字符串       . a* @, Y& \7 K9 l* }
那么我添加加如下代码- w8 _, J, w2 y# d
u8 arry[5]={1,1,1,1,1};  //欲转换的数组
6 R, u1 w3 n& E0 f* S% z# }% k8 Iu8 str[]="12345";          //原本的字符串
$ G8 E( V1 ^, D  T$ Iu8 i;
& d. b' |9 q5 t/ R2 f3 A  t        for(i=0;i<5;i++){
9 `- Q  K* a, S4 {        str[i] = arry[i] +0x30;
8 O" I# s6 f5 ?8 l}: f" @0 v/ f7 N; L
显示 LCD12864_write_word(str);       % v' f* F0 V# M9 e
就变成了11111& B2 w# k( L8 U# n+ O* H
一个数字0x30(十进制48)是字符0,不明白的话搜下ascii码表有帮助$ w4 @% h' \4 w5 y! J

该用户从未签到

3#
发表于 2021-12-6 13:19 | 只看该作者

" x+ K9 P) g& U/*$PAGE*/
% t6 p+ E& e( A, v7 Y4 l. @1 u9 V/*
( J: H  }* H0 h; E' G0 o: f3 N*********************************************************************************************************# X' C9 j8 {" P: J% @
*                                       HexToStr
5 z- r5 _3 L6 K! Y- o; |2 @: s1 U* Functions  : Hex转字符串/ J( ~7 N: M- u' L1 F" X7 S1 D  a  h
*
8 J9 c& c; |% }# w* Arguments  : pSrc                 被转换的Hex地址7 @7 y0 {: v& j9 J+ z/ N
*              pDst                 被转换后的字符串地址& [% d7 `6 Q% C) _
*              LimitLen             目的地址空间限制长度  ! Q; R8 _2 n# S
*                         ^: v- e8 n, o8 Q, \/ r
* Returns    : 无
- [" u+ w% ^" L/ {! b  ]*********************************************************************************************************$ U: x2 v& n: V& ~
*/! t8 i! ?3 }4 T% M, J: f" j/ q
CPU_VOID HexToStr(CPU_VOID *pDst, CPU_VOID *pSrc, CPU_INT16U LimitLen), X" a0 _1 c3 T
{% D6 X) ~' g( o( D& R
    CPU_INT16U i = 0;
4 J4 ?2 I! b  I; Q; X! i    CPU_INT08U ddl, ddh;9 F9 r+ X, [* S
    CPU_INT08U *pSrcBuff = (CPU_INT08U*)pSrc;* ]: d9 Y! a1 w( O2 P
    CPU_INT08U *pDstBuff = (CPU_INT08U*)pDst;, @* G2 ?4 t9 K$ n6 Y- Q
   5 s" G# M2 k. T" P( ]7 Q" X
    CPU_INT16U ValidLen = LimitLen >> 1;( r4 [$ M  d. Q
   
  M- h: o/ Q. w: k% Y( N& t    for (i = 0; i < ValidLen; i++)
3 O& ~' `2 k  J    {
& r7 P3 v* J* f7 ^& e        ddh = 48 + pSrcBuff[i] / 16;
: ^; z6 j9 @7 V' \# w/ r9 J8 s& j/ l        ddl = 48 + pSrcBuff[i] % 16;
0 j! g% `  e2 Q3 {% X        
. Y. J* T& [" ~        if (ddh > 57)2 ~7 |2 Y& a8 O3 ?
        {( N$ {% S$ c% M% I" q3 y
            ddh = ddh + 7;# j! E0 R' S+ K) w1 }. W# [4 u3 E
        }" ?( ^% x( p8 M6 ~$ n! H( T
        if (ddl > 57)
1 ]+ t2 P4 \2 {! k9 I, u1 D        {; Y5 A% R9 g/ y( ^: K4 O( N* V5 E
            ddl = ddl + 7;9 n' {0 l# U7 h* F! b
        }
6 z' i$ a0 b$ G  N, m        3 c6 v* q7 W8 f( X
        pDstBuff[i * 2] = ddh;
1 m& t+ w  H: |% l8 T% t        pDstBuff[i * 2 + 1] = ddl;
) D; J% r) H/ ^, [8 Y( n5 D    }
! X5 O+ D- m" i3 U8 q: P8 y0 I   
) a; W& [1 a/ c, B' v. f# @) H8 ^    if (LimitLen % 2 != 0)
& N6 }* B  r/ S' j3 e3 v, b( a        pDstBuff[LimitLen * 2] = '\0';% V" M, Y% ~% |* V8 F0 f4 z
}
! \6 M6 C8 q$ ~' j自用代码,可以参考
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-9 17:52 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表