08/02/09 16:36:01
>>115 入力チェックは一切していない
#include<stdio.h>
void encode(char *bits, int parity)
{
unsigned short value=0;
int i, bitnum=0;
for(i=0;bits[i];i++)
{
value=(value<<1)+bits[i]-'0';
bitnum+=value&1;
if((i+1)%15==0)
{
printf("%04X\n", (value<<1)+((bitnum+parity)&1));
value=0;
bitnum=0;
}
}
if((i%15))
{
value<<=(15-(i%15));
printf("%04X\n", (value<<1)+((bitnum+parity)&1));
}
}
int main(int argc, char *argv[])
{
if(argc==3) encode(argv[1], atoi(argv[2]));
return 0;
}