欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字节/比特互转(C)

程序员文章站 2024-02-29 18:28:04
...
将一个整型转换成对应的比特,或将一个比特串转换成对应的整型
//将一个N比特数转换成对应的比特,0为低位
void byte_to_bit1(int x, int *y) 
{
    for (int i = N - 1; i >= 0; i--)
    {
        y[i] = (x >> i) & 0x01;
    }
}


//将一个N比特数转换成对应的比特,0为高位
void byte_to_bit2(int x, int *y)
{
    for(int i = 0; i < N; i++)
    {
        y[i] = x >> (N - i - 1) & 0x01;
    }
}


//将一个二进制数转换成十进制数,0为低位
int bit_to_byte1(int *x)
{
    int y = 0;
    
    for(int i = 0; i < N; i++)
    {
        y += (x[i] << i);
    }

    return y;
}



//将一个二进制数转换成十进制数,0为高位
int bit_to_byte2(int *x)
{
    int y = 0;
    
    for(int i = N - 1; i >=0; i--)
    {
        y += (x[i] << (N - i - 1));
        printf("%d\n", y);
    }

    return y;
}
将多个数转换成对应的二进制数
//将N2个数拆分成N1个比特,0→N1-1 → 低位→高位
void number_to_bit(int *x, int y[][N2])
{
    for(int j = 0; j < N2; j++)
    {
        for(int i = 0; i < N1; i++)
        {
            //向左移动会导致数据溢出
            y[i][j] = (x[j] >> i) & 0x01;
        }
    }
}
相关标签: C和指针