打印所有3位4进制数

#include <stdio.h>
//打印所有3位4进制数
int data[4];
void f(int n)
{
    int i;
    if(n==3)//n为data的位数
    {
        for(i=0;i<3;i++)
            printf("%d",data[i]);
        printf("\n");
    }
    else
    {
        data[n]=0;f(n+1);
        data[n]=1;f(n+1);
        data[n]=2;f(n+1);
        data[n]=3;f(n+1);
    }    
}
void main()
{
    f(0);
}

运行:

000
001
002
003
010
011
012
013
020
021
022
023
030
031
032
033
100
101
102
103
110
111
112
113
120
121
122
123
130
131
132
133
200
201
202
203
210
211
212
213
220
221
222
223
230
231
232
233
300
301
302
303
310
311
312
313
320
321
322
323
330
331
332
333
Press any key to continue

在51单片机中,如果想要将接收到的串口据从16进制转换成10进制,通常需要通过以下几个步骤: 1. **接收串口据**:首先,你需要设置好串口通信协议,监听从外部设备接收到的据流。假设接收到的是两的十六进制字符。 2. **解析字符**:每接收到一个字符,将其视为两个字节的十六进制值。可以将这两个字节分别转换为对应的十进制字。 - 将字符转为ASCII码,因为大部分51系列单片机的UCONN寄存器处理的是ASCII码。 - 然后,每个ASCII码对应四进制,可以进一步转换为8的十六进制值。 3. **十六进制到十进制**:将两个字节合并成一个16的十六进制,然后使用适当的算法(如乘以16的幂次递增)将这个16进制转换为十进制。例如,可以遍历每一,计算每一乘以16的相应置的值。 4. **存储结果**:最后将转换后的十进制值存储在一个变量或者组中,供后续处理。 下面是一个简单的伪代码示例: ```c char hex_char1, hex_char2; // 接收的两个十六进制字符 int decimal_value; // 接收字符并转换 hex_char1 = serial_get(); hex_char2 = serial_get(); // 转换为十进制 decimal_value = (hex_char1 - '0') * 16 + (hex_char2 - '0'); // 存储或使用decimal_value ``` 请注意,这只是一个基本的流程概述,实际操作可能需要考虑错误处理、边界条件以及串口据的异步接收等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

todaycode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值