【问题标题】:iOS - Unicode numeric value of individual characters in a stringiOS - 字符串中单个字符的 Unicode 数值
【发布时间】:2012-05-12 21:39:37
【问题描述】:

对于 iOS 中的 Objective-C:

如果我有一个字符串,我如何读取单个字符的 unicode 数值?

例如,如果我的字符串是:“Δ”那个 unicode 字符是 U+0394,那么我如何读取字符串,找出“0394”然后创建一个新字符串,并在该值上添加 100,所以新字符串将是字符 U+0494 或“ҕ”

谢谢!

【问题讨论】:

    标签: ios unicode character-encoding numeric


    【解决方案1】:

    首先,您的逻辑存在谬误。 ∆ + 100 != ҕ。 Unicode 以 base-16(十六进制)计算,因此“Δ”实际上等于十进制的 916,而不是 394。因此,0x0494 - 0x0394 = 0x0100 等于 256

    考虑到这一点,您的代码应如下所示:

    unichar delta = 0x0394;
    unichar weirdB = delta + 0x0100;
    
    NSString *deltaStr = [NSString stringWithCharacters:&delta length:1];
    NSString *weirdBString = [NSString stringWithCharacters:&weirdB length:1]; 
    

    【讨论】:

    • @AlbertRenshaw 谢谢,但请不要使用@zahreelay 提供的代码。这是不正确的,不会工作! -intValue 不会为 unicode 字符返回正确的值。请记住这一点,并尽可能更改接受的答案。
    【解决方案2】:
      NSString *c = [NSString stringWithFormat:@"%C", unicodeValue];
      int unicode = [c intvalue];
      // then create a new one
      unicode+=100;
      // create a unicode value again
      NSString *uniString = [NSString stringWithCharacters:(unichar *)&unicode length:1];
    

    【讨论】:

    • 您的逻辑中的主要谬误。 Unicode 是基数 16,而不是基数 10。
    • whatevr 是基础,这对这个答案有何影响??
    • 感谢您的回答!感谢理查德指出基本问题!我不知道 :) 我想我想加上“64” ;) 哈哈!
    • 学习基础计算。维基百科是你的朋友:en.wikipedia.org/wiki/Hexadecimal。另外,你的代码是错误的。 #1,应该是-intValue,而不是-intvalue。其次,-intValue 在非数字字符'0' - '9' 上返回零。最后,花点时间阅读我的答案并解释 OP 是如何不正确的,然后再投反对票。 Downvotes 应该保留给错误的答案,不要因为我告诉你你的答案不正确而生我的气。
    • 请不要误会,但此代码不起作用! -intValue 不适用于 unicode 字符!
    猜你喜欢
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2019-04-09
    相关资源
    最近更新 更多