gembin

          OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

          HBase, Hadoop, ZooKeeper, Cassandra

          Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

          There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

          About Me

           

          Objective-C NSString formatting

          The format specifiers supported by the NSString formatting methods and CFString formatting
          functions follow the IEEE printf specification; the specifiers are summarized in Table 1.
          Note that you can also use the “n$” positional specifiers such as %1$@ %2$s.
          For more details, see the IEEE printf specification. You can also use these format specifiers with the NSLog function.

          Table 1 Format specifiers supported by the NSString formatting methods and CFString formatting functions
          定義說明
          %@Objective-C object, printed as the string returned by descriptionWithLocale: if available, or description otherwise. Also works with CFTypeRef objects, returning the result of the CFCopyDescription function.
          %%‘%’ character
          %d, %D, %iSigned 32-bit integer (int)
          %u, %UUnsigned 32-bit integer (unsigned int)
          %hiSigned 16-bit integer (short)
          %huUnsigned 16-bit integer (unsigned short)
          %qiSigned 64-bit integer (long long)
          %quUnsigned 64-bit integer (unsigned long long)
          %xUnsigned 32-bit integer (unsigned int), printed in hexadecimal using the digits 0–9 and lowercase a–f
          %XUnsigned 32-bit integer (unsigned int), printed in hexadecimal using the digits 0–9 and uppercase A–F
          %qxUnsigned 64-bit integer (unsigned long long), printed in hexadecimal using the digits 0–9 and lowercase a–f
          %qXUnsigned 64-bit integer (unsigned long long), printed in hexadecimal using the digits 0–9 and uppercase A–F
          %o, %OUnsigned 32-bit integer (unsigned int), printed in octal
          %f64-bit floating-point number (double)
          %e64-bit floating-point number (double), printed in scientific notation using a lowercase e to introduce the exponent
          %E64-bit floating-point number (double), printed in scientific notation using an uppercase E to introduce the exponent
          %g64-bit floating-point number (double), printed in the style of %e if the exponent is less than –4 or greater than or equal to the precision, in the style of %f otherwise
          %G64-bit floating-point number (double), printed in the style of %E if the exponent is less than –4 or greater than or equal to the precision, in the style of %f otherwise
          %c8-bit unsigned character (unsigned char), printed by NSLog() as an ASCII character, or, if not an ASCII character, in the octal format \\ddd or the Unicode hexadecimal format \\udddd, where d is a digit
          %C16-bit Unicode character (unichar), printed by NSLog() as an ASCII character, or, if not an ASCII character, in the octal format \\ddd or the Unicode hexadecimal format \\udddd, where d is a digit
          %sNull-terminated array of 8-bit unsigned characters. %s interprets its input in the system encoding rather than, for example, UTF-8.
          %SNull-terminated array of 16-bit Unicode characters
          %pVoid pointer (void *), printed in hexadecimal with the digits 0–9 and lowercase a–f, with a leading 0x
          %LLength modifier specifying that a following a, A, e, E, f, F, g, or G conversion specifier applies to a long double argument
          %a64-bit floating-point number (double), printed in scientific notation with a leading 0x and one hexadecimal digit before the decimal point using a lowercase p to introduce the exponent
          %A64-bit floating-point number (double), printed in scientific notation with a leading 0X and one hexadecimal digit before the decimal point using a uppercase P to introduce the exponent
          %F64-bit floating-point number (double), printed in decimal notation
          %zLength modifier specifying that a following d, i, o, u, x, or X conversion specifier applies to a size_t or the corresponding signed integer type argument
          %tLength modifier specifying that a following d, i, o, u, x, or X conversion specifier applies to a ptrdiff_t or the corresponding unsigned integer type argument
          %jLength modifier specifying that a following d, i, o, u, x, or X conversion specifier applies to a intmax_t or uintmax_t argument


          Mac OS X uses several data types—NSInteger, NSUInteger,CGFloat, and CFIndex—to provide a
          consistent means of representing values in 32- and 64-bit environments. In a 32-bit environment,
          NSInteger and NSUInteger are defined as int and unsigned int, respectively. In 64-bit environments,
          NSInteger and NSUInteger are defined as long and unsigned long, respectively. To avoid the need to
          use different printf-style type specifiers depending on the platform, you can use the specifiers shown
          in Table 2. Note that in some cases you may have to cast the value.

          Table 2 Format specifiers for data types
          類型定義建議
          NSInteger%ld or %lxCast the value to long
          NSUInteger%lu or %lxCast the value to unsigned long
          CGFloat%f or %g%f works for floats and doubles when formatting; but see below warning when scanning
          CFIndex%ld or %lxThe same as NSInteger
          pointer%p%p adds 0x to the beginning of the output. If you don’t want that, use %lx and cast to long.
          long long%lld or %llxlong long is 64-bit on both 32- and 64-bit platforms
          unsigned long long%llu or %llxunsigned long long is 64-bit on both 32- and 64-bit platforms

          The following example illustrates the use of %ld to format an NSInteger and the use of a cast.

          1
          2
          NSInteger i = 42;
          printf("%ld\n", (long)i);

          In addition to the considerations mentioned in Table 2, there is one extra case with scanning:
          you must distinguish the types for float and double. You should use %f for float, %lf for double.
          If you need to use scanf (or a variant thereof) with CGFloat, switch to double instead, and copy the double to CGFloat.

          1
          2
          3
          4
          CGFloat imageWidth;
          double tmp;
          sscanf (str, "%lf", &tmp);
          imageWidth = tmp;

          It is important to remember that %lf does not represent CGFloat correctly on either 32- or 64-bit platforms.
          This is unlike %ld, which works for long in all cases.





          posted on 2012-03-04 00:27 gembin 閱讀(1066) 評論(0)  編輯  收藏 所屬分類: Objective-C


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           

          導航

          統(tǒng)計

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊

          收藏夾(9)

          Adobe

          Android

          AS3

          Blog-Links

          Build

          Design Pattern

          Eclipse

          Favorite Links

          Flickr

          Game Dev

          HBase

          Identity Management

          IT resources

          JEE

          Language

          OpenID

          OSGi

          SOA

          Version Control

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          free counters
          主站蜘蛛池模板: 昌图县| 城固县| 青州市| 望奎县| 南京市| 化德县| 丰都县| 迁西县| 繁昌县| 瑞丽市| 科技| 四子王旗| 惠水县| 韩城市| 板桥市| 达日县| 广宗县| 城步| 沿河| 开远市| 德江县| 大渡口区| 广安市| 姜堰市| 辽源市| 牙克石市| 阿克陶县| 同仁县| 西峡县| 藁城市| 金川县| 保定市| 达州市| 垣曲县| 班戈县| 晋州市| 凤台县| 揭西县| 云龙县| 柳河县| 金坛市|