IP を 10 進数に変換するコードを書きましたが、予期しない結果になるようです。これは、BYTE から DWORD への変換の不一致が原因です。
バイト変数を単語に変換する方法はありますか、型キャストが機能していないようです。
これがコードの一部です
//function to convert ip 2 decimal
DWORD ip2dec(DWORD a ,DWORD b,DWORD c,DWORD d)
{
DWORD dec;
a=a*16777216;
b=b*65536;
c=c*256;
dec=a+b+c+d;
return dec;
}
int main()
{
BYTE a,b,c,d;
/* some operations to split the octets and store them in a,b,c,d */
DWORD res=ip2dec(a,b,c,d);
printf("The converted decimal value = %d",dec);
}
3232235777 ではなく -1062731519 という値を取得しています。