I'm passing a memory address as arguments to a program but when I try and convert the string to an unsigned long, I don't get anything.

Code:
int main(int argc,char *argv[])
{
   unsigned long address = strtoul(argv[1])
   printf("Address: %ul\n",address);
}
It just prints out a 0. The address I tried passing was bfffffff.

Can I not pass hex values as arguments?