我想知道如何将表情符号转换为十六进制值。例如,对于“微笑的脸,张开嘴巴和微笑的眼睛”(相当于笑脸 :) ),我应该得到“1F604”。
NSString *smiley = @"";
NSData *data = [smiley dataUsingEncoding:NSUTF32LittleEndianStringEncoding];
uint32_t unicode;
[data getBytes:&unicode length:sizeof(unicode)];
NSLog(@"%x", unicode);
// Output: 1f604
反转方向:
uint32_t unicode = 0x1f604;
NSString *smiley = [[NSString alloc] initWithBytes:&unicode length:sizeof(unicode) encoding:NSUTF32LittleEndianStringEncoding];
NSLog(@"%@", smiley);
// Output:
< p >< em >备注:这两个代码示例都假设整数以< em >小端字节顺序存储(这适用于所有当前运行OS X或iOS的平台)。
Swift 版本
let smiley = ""
let uni = smiley.unicodeScalars // Unicode scalar values of the string
let unicode = uni[uni.startIndex].value // First element as an UInt32
println(String(unicode, radix: 16, uppercase: true))
// Output: 1F60A