原文链接
NSString * str = @"0xff055008" ;
unsigned long red = strtoul ( [ str UTF8String] , 0 , 16 ) ;
unsigned long red = strtoul ( [ @"0x6587" UTF8String] , 0 , 0 ) ;
NSLog ( @"转换完的数字为:%lx" , red) ;
十六进制转换为普通字符串的。
+ ( NSString * ) stringFromHexString: ( NSString * ) hexString {
char * myBuffer = ( char * ) malloc ( ( int ) [ hexString length] / 2 + 1 ) ;
bzero ( myBuffer, [ hexString length] / 2 + 1 ) ;
for ( int i = 0 ; i < [ hexString length] - 1 ; i + = 2 ) {
unsigned int anInt;
NSString * hexCharStr = [ hexString substringWithRange: NSMakeRange ( i, 2 ) ] ;
NSScanner * scanner = [ [ [ NSScanner alloc] initWithString: hexCharStr] autorelease] ;
[ scanner scanHexInt: & anInt] ;
myBuffer[ i / 2 ] = ( char ) anInt;
}
NSString * unicodeString = [ NSString stringWithCString: myBuffer encoding: 4 ] ;
NSLog ( @"------字符串=======%@" , unicodeString) ;
return unicodeString;
}
普通字符串转换为十六进制的。
+ ( NSString * ) hexStringFromString: ( NSString * ) string{
NSData * myD = [ string dataUsingEncoding: NSUTF8StringEncoding] ;
Byte * bytes = ( Byte * ) [ myD bytes] ;
NSString * hexStr= @"" ;
for ( int i= 0 ; i< [ myD length] ; i++ )
{
NSString * newHexStr = [ NSString stringWithFormat: @"%x" , bytes[ i] & 0xff ] ;
if ( [ newHexStr length] == 1 ) {
hexStr = [ NSString stringWithFormat: @"%@0%@" , hexStr, newHexStr] ;
} else {
hexStr = [ NSString stringWithFormat: @"%@%@" , hexStr, newHexStr] ;
}
return hexStr;
}
int 转data
int i = 1 ;
NSData * data = [ NSData dataWithBytes: & i length: sizeof ( i) ] ;
data 转int
int i;
[ data getBytes: & i length: sizeof ( i) ] ;