iOS中NSString轉換成HEX(十六進制)-NSData轉換成int


http://www.2cto.com/kf/201402/281501.html

 

1
2
3
4
5
6
NSString *str = @ "0xff055008" ;
//先以16為參數告訴strtoul字符串參數表示16進制數字,然后使用0x%X轉為數字類型
unsigned long red = strtoul([str UTF8String], 0 , 16 );
//strtoul如果傳入的字符開頭是“0x”,那么第三個參數是0,也是會轉為十六進制的,這樣寫也可以:
unsigned long red = strtoul([@ "0x6587" UTF8String], 0 , 0 );
NSLog(@ "轉換完的數字為:%lx" ,red);

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// 十六進制轉換為普通字符串的。
+ (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];
//下面是Byte 轉換為16進制。
NSString *hexStr=@ "" ;
for ( int i= 0 ;i<[myD length];i++)
  
{
NSString *newHexStr = [NSString stringWithFormat:@ "%x" ,bytes[i]& 0xff ]; ///16進制數
  
if ([newHexStr length]== 1 )
  
hexStr = [NSString stringWithFormat:@ "%@0%@" ,hexStr,newHexStr];
  
else
  
hexStr = [NSString stringWithFormat:@ "%@%@" ,hexStr,newHexStr];
}
return hexStr;
}

 

 

1
2
3
4
5
6
//int 轉data
int i = 1 ;
NSData *data = [NSData dataWithBytes: &i length: sizeof(i)];
//data 轉int
int i;
[data getBytes: &i length: sizeof(i)];


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM