C语言,信号转换问题

计算机中的所有信息都是以二进制方式表示的,这两个二进制数分别是0和1。0和1两个数可以分别用电路中的两种状态来表示,很容易用电器元件来实现,电键的闭合为1,断开为0,高电平为1,低电平为0。 假设有一条线路只输出十进制数,但是都是以二进制数的电路信号传输过来。现在你需要编写一套信号转换系统,来还原每一个十进制数。

输入格式:
第一行输入一个正整数n(n <= 10000) 之后的1-n行每行给出长度为8的字符串,字符串只包含H和L两个字符,其中H表示高电平,L表示低电平

输出格式:
对于第m条信号,用一行输出,格式为:signal#m:该信号所对应的十进制数

输入样例:
在这里给出一组输入。例如:

3
LLHHLLHH
LLLLHHHH
LLLHLLLL
输出样例:
在这里给出相应的输出。例如:

signal#1:51
signal#2:15
signal#3:16

img


// ConsoleApplication10.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include  <stdio.h>
#include <malloc.h>

void test() {
    int n;
    scanf("%d",&n);
    if (n<=10000)
    {
        int* value = (int*)malloc(sizeof(int) * n);
        for (int i = 0; i < n; i++)
        {
            char input[8];
            for (int j = 0; j < 8; j++)
            {
                scanf(" %c", &input[j]);
            }

            int tmp=0;
            for (int j = 0; j < 8; j++)
            {
                if (input[j]=='H')
                {
                    tmp += (0x80>>j);
                }
            }
            value[i] = tmp;
        }
        for (int i = 0; i < n; i++)
        {
            printf("signal#%d:%d\n",(i+1),value[i]);
            
        }
    }
}

int main()
{
    test();
    getchar();
}



把L转换成0,H转换成1,然后从右到左分别乘以2的0次方、1次方......,再求和即可

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^