iOS中将Emoji转换为十六进制值

3

我想知道如何将表情符号转换为十六进制值。例如,对于“微笑的脸,张开嘴巴和微笑的眼睛”(相当于笑脸 :) ),我应该得到“1F604”。

2个回答

5
这是您在寻找的内容吗?
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的平台)。

@Martin。谢谢你的回答。我还有一个疑问,如何将'1f604'转换为笑脸? - Jeff
非常感谢。它适用于iOS表情符号键盘中的初始一组笑脸。但是对于最后一组,即从1,2…#开始的带有蓝色边框的表情符号,它会将表情符号“1”的十六进制值显示为“31”,并在转换为表情符号后得到数字“1”,而不是笑脸。 - Jeff
1
@Jeff: "1⃣" 不是一个单一的字符,而是两个字符:"1" 后面跟着 U+20E3 = COMBINING ENCLOSING KEYCAP... - Martin R
对于最后一组表情符号,在将uint32_t转换为笑脸后,几乎所有字符都不如预期。任何帮助都将不胜感激? - Jeff
1
我该如何将NSString *smiley = @"This is a happy ";转换? - San007

1

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接