c - How to cast long unsigned to unsigned char*? -
i trying hash unsigned long value, hash function takes unsigned char *, seen in implementation below:
unsigned long djb2(unsigned char *key, int n) { unsigned long hash = 5381; int = 0; while (i < n-8) { hash = hash * 33 + key[i++]; hash = hash * 33 + key[i++]; hash = hash * 33 + key[i++]; hash = hash * 33 + key[i++]; hash = hash * 33 + key[i++]; hash = hash * 33 + key[i++]; hash = hash * 33 + key[i++]; hash = hash * 33 + key[i++]; } while (i < n) hash = hash * 33 + key[i++]; return hash; } is there way can achieve goal, perhaps cast between two?
unsigned long x; unsigned char * p = (unsigned char*)&x; make sure use 4 bytes through p, or whatever length of unsigned long on system.
Comments
Post a Comment