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)];
|