An NSNumber may contain an int, float, double, bool or a bunch of other things. So a binary version needs to store type and value. Which means that you want to archive (or, if you prefer, serialise) it. With that in mind, you're interested in the NSCoding protocol.
NSNumber responds to NSCoding so you can use the following:
NSNumber *aNumber = ...wherever this comes from...;
NSData *dataBlob = [NSKeyedArchiver archivedDataWithRootObject:aNumber];
/* and, later; this will return an autoreleased object so you quite possibly want
to retain it */
NSNumber *number = [NSKeyedUnarchiver unarchiveObjectWithData:dataBlob];
See Ramhound's answer for specifics on getting C primitive access to the binary stuff contained in an NSData. The most relevant properties are length and bytes, and you'll possibly also be interested in +dataWithBytes:length: to create a new NSData from C primitives.
There are no guarantees about how long the binary data will be or what encoding it will use. You'd be better asking NSNumber for its contents in a particular format (e.g. [number intValue]), storing that to a C primitive and using the pointer to that if you're working on that sort of level.