字节/比特互转(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;
}
}
}
上一篇: 从零开始的指针运用1
下一篇: C语言指针简单介绍