- emoji表情鍵盤如下:
emoji
- 在OC中, emoji表情的十六進制編碼如下:
emoji表情的十六進制編碼
- 想要將emoji表情的十六進制編碼轉成具體的 emoji 字符串, 就需要使用下面的方法(這里將代碼寫到了NSString的分類中)
// 定義宏
#define EmojiCodeToSymbol(c) ((((0x808080F0 | (c & 0x3F000) >> 4) | (c & 0xFC0) << 10) | (c & 0x1C000) << 18) | (c & 0x3F) << 24)
#pragma mark - < emoji 表情 >
/**
將十六進制的編碼轉為 emoji 字符串
@param intCode 無符號 32 位整數(shù)
@return 字符串
*/
+ (NSString *)emojiWithIntCode:(unsigned int)intCode
{
unsigned int symbol = EmojiCodeToSymbol(intCode);
NSString *string = [[NSString alloc] initWithBytes:&symbol length:sizeof(symbol) encoding:NSUTF8StringEncoding];
if (string == nil) {
string = [NSString stringWithFormat:@"%C", (unichar)intCode];
}
return string;
}
/**
將十六進制的編碼轉為 emoji 字符串
@param stringCode 十六進制格式的字符串, 例如`0x1f633`
@return 字符串
*/
+ (NSString *)emojiWithStringCode:(NSString *)stringCode
{
NSScanner *scanner = [[NSScanner alloc] initWithString:stringCode];
unsigned int intCode = 0;
[scanner scanHexInt:&intCode];
return [self emojiWithIntCode:intCode];
}
/**
返回當前十六進制格式字符串`0x1f633`對應的emoji字符串
@return emoji 字符串
*/
- (NSString *)emoji
{
return [NSString emojiWithStringCode:self];
}
- 使用時只需要使用編碼調用即可:
NSString *code = @"0x1f603";
NSString *emoji = [code emoji];