【问题标题】:Emoji to Hex value in iosios中的表情符号到十六进制值
【发布时间】:2014-01-29 10:03:27
【问题描述】:

我想知道如何将表情符号转换为十六进制值。那是针对具有“张开嘴和微笑眼睛的笑脸”的笑脸(笑脸对应于:))我应该得到“ 1F604"

【问题讨论】:

    标签: ios emoji


    【解决方案1】:

    这是你要找的吗?

    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: ?
    

    备注: 两个代码示例都假设整数以小端字节序存储(当前所有运行 OS X 或 iOS 的平台都是这种情况)。

    【讨论】:

    • @Martin。谢谢你的回答。我还有一个疑问,如何实现反向,即从“1f604”到笑脸
    • 非常感谢。它适用于 iOS 表情符号键盘中的初始笑脸集。但对于最后一组,即从 1,2...# 开始,带有蓝色边框,它给出的十六进制值为 '表情符号 '1' 为 31',转换为表情符号后,我得到数字 '1' 不是笑脸
    • @Jeff:“1⃣”不是单个字符,而是两个字符:“1”后跟 U+20E3 = COMBINING ENCLOSING KEYCAP ...
    • 对于最后一组表情符号,在uint32_t转换为笑脸后,几乎所有字符都不像预期的那样。任何帮助都会很明显??
    • 我如何转换 NSString *smiley = @"这是一个快乐的?"; ?
    【解决方案2】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-15
      • 2015-02-01
      • 1970-01-01
      • 2018-07-26
      • 2017-03-27
      • 2015-09-27
      • 2019-07-13
      • 2018-08-04
      相关资源
      最近更新 更多