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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在51单片机中比如{1,2,3,4,5,6}转化为“123456”这种字符串 怎么编程? * ^  X% c7 a" ~$ O

该用户从未签到

2#
发表于 2021-12-6 11:15 | 只看该作者
  n/ S" q3 x* f- M+ s7 O
楼主想把数组变成字符串干嘛用呢
. L9 p0 }' L/ h8 F(我在搜百度时,发现我们论坛这个问题也没回答,所以就此发表一点个人见解)( N+ m- `& ?- ~) K+ @4 K% a
我在lcd12864里:打印一串字符用         LCD12864_write_word(变量);
* F, g$ q( _* }6 |7 H  D比如 LCD12864_write_word("00");; F! J+ b7 [7 p+ B& b$ ], \! {
变量当然可以是字符串       0 n! G. Y" n2 m7 }% ?" v
那么我添加加如下代码
3 i8 B6 w( S0 _5 G$ d" G$ Uu8 arry[5]={1,1,1,1,1};  //欲转换的数组
! @* f$ R) i# Z9 `" Z0 ]  \u8 str[]="12345";          //原本的字符串
6 U4 G. {7 \' F# M% H  G/ Ju8 i;8 d% ~# U% W& I( N' Z# ^
        for(i=0;i<5;i++){
: e) E4 K# J: x% T% z        str[i] = arry[i] +0x30;
; U- t. I9 Y" m}8 ^4 D4 i9 X2 a4 d* @$ P( k- s4 F9 a
显示 LCD12864_write_word(str);      
  G9 F2 E( ~8 q) C0 p7 {就变成了11111
" O* V9 B; U7 l! B7 E# Q一个数字0x30(十进制48)是字符0,不明白的话搜下ascii码表有帮助8 C9 ]8 r5 F( s! j7 }

该用户从未签到

3#
发表于 2021-12-6 13:19 | 只看该作者
2 a  B0 I$ d' [
/*$PAGE*/ 5 n- ?! @" J" ~& o) S! e
/*
4 p2 z0 O4 |2 Q3 a, B) ~/ b0 |*********************************************************************************************************
3 S; j( _+ O3 h) V*                                       HexToStr
8 J+ V$ G$ h  \; i* Functions  : Hex转字符串; x. r6 _$ i* F" E. s# s5 t' I
*
2 P; F7 Z6 f$ l* Arguments  : pSrc                 被转换的Hex地址
; X; N6 x% f& s) `, q*              pDst                 被转换后的字符串地址
7 X, h$ b9 W. Y: _: U& f) E*              LimitLen             目的地址空间限制长度  
3 J4 f! q7 s7 ?*                       ! F  s7 ^& V: u1 A) E
* Returns    : 无* M- c& D$ K7 ~4 ?/ ?
*********************************************************************************************************, U4 [1 A; o/ a0 A! e. N2 h0 F' Q
*/
7 E, [3 @$ g' i- N* O6 y: GCPU_VOID HexToStr(CPU_VOID *pDst, CPU_VOID *pSrc, CPU_INT16U LimitLen)+ i, O* n! n# E; i, j
{- J" C6 y3 U  H  J# C" x
    CPU_INT16U i = 0;
5 C2 z3 M, Z6 \6 m$ O    CPU_INT08U ddl, ddh;7 o8 [5 _/ j- |" l7 j! z3 g
    CPU_INT08U *pSrcBuff = (CPU_INT08U*)pSrc;2 D9 Q* b2 n7 @* _  {8 {
    CPU_INT08U *pDstBuff = (CPU_INT08U*)pDst;+ d6 E$ l6 L" G% H
   * J; }& v4 m, I. J& Y5 z) C1 A
    CPU_INT16U ValidLen = LimitLen >> 1;6 A  Z* ?8 j! s$ g! L
   " p, x7 r) R/ v
    for (i = 0; i < ValidLen; i++)
$ s+ D9 R9 P! w2 @: J& M0 ^9 _. l1 E( N+ ]    {& L/ q' R0 l  D
        ddh = 48 + pSrcBuff[i] / 16;, t: @6 a- V( n
        ddl = 48 + pSrcBuff[i] % 16;
% \3 G* Y( C0 J0 Q" ~/ z6 T        * v5 j0 L! \( ]% O5 l* b
        if (ddh > 57)  v: z' L6 E5 @% Z7 d
        {
+ @2 L* e% v8 v            ddh = ddh + 7;
) T6 l! Z7 t6 D& Z        }! b- [: K% ~1 ~! O9 V
        if (ddl > 57)5 n6 }" o* e5 l$ ]7 q
        {$ }/ S9 }' k+ J7 N0 A; `7 S; q
            ddl = ddl + 7;* a# ~+ l( P$ v5 n
        }
* F+ W! w. p% B: O        6 q. t2 g! h4 x6 _
        pDstBuff[i * 2] = ddh;
5 y8 V( E( k0 b  m+ Q4 k0 v. ]        pDstBuff[i * 2 + 1] = ddl;8 {6 N; x% F2 L# ^! H! w
    }
0 M; L: K7 c# R% K! `8 q/ ^   # X" v6 T5 p5 e3 |7 m$ V
    if (LimitLen % 2 != 0)" G5 L5 t/ k4 Q- s& w* A
        pDstBuff[LimitLen * 2] = '\0';
1 h; k" l8 V( h. w- N; W}4 |/ [. n2 h- \( ]9 k
自用代码,可以参考
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-12 16:52 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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