my $date = $day | ($month<<5) | ($year<<9); my $time = $second | ($min<<5) | ($hour<<11); my $fat32 = sprintf "0x%08x", $time | ($date<<16); #### my $bits = sprintf "%07b%04b%05b%05b%06b%05b", $year, $month, $day, $hour, $min, $sec; my $fat32 = sprintf "0x%08x", oct( "0b$bits" ); #### Sat Jul 25 16:09:52 2015 Binary: year mon day hour min sec 0100011 0111 11001 10000 001001 11010 35 7 25 16 9 26 2015 52 Hex: 0100 0110 1111 1001 1000 0001 0011 1010 0x46f9813a