从字符串中获取包含零的int值(如果以0开头,则为incase)

时间:2015-01-05 07:50:31

标签: ios objective-c

我有一个关于将字符串转换为intvalue的问题。我的问题和问题是如果我有一个名为" 001223" 的字符串,我将 1223 作为intvalue。但我希望将 001223 作为最终的int值。如果我的问题不明确,请告诉我。谢谢你的时间

3 个答案:

答案 0 :(得分:3)

数字00122312232446/21223.000之间的价值没有差异。它们都是指相同的号码。

如果你想保持前导零,那么你需要将它保持为字符串或保留另一条信息,以便以后可以重建,基本上是前面的零数,例如:

struct sNumWithLeadingZeros {
    size_t       zeroCount;
    unsigned int actualValue;
};

我可能会建议前者(将其保留为字符串),因为这可能会减少工作量。

答案 1 :(得分:3)

“前导零”与整数的文本表示有关,当在计算机中存储为整数值时,前导零不存在。

但是,如果你想要做的是显示与从文本转换之前具有相同位数的数字,那么:如果字符串仅包含 数字的数字,例如你有@"001223"然后你可以拿这个字符串的length来确定位数。稍后将数字转换回字符串格式时,您可以使用格式化转换,例如stringWithFormat:,以及指定所需位数的格式说明符。您需要阅读文档中的格式,但这是一个示例:

NSString *input = @"001223";
int x = [input intValue];
int digits = (int)input.length;
NSString *output = [NSString stringWithFormat:@"%0*d", digits, x];

output的值与input相同。细分的格式为:0 - 前导零; *使用动态字段,将使用digits的值; d - int

HTH

答案 2 :(得分:1)

不能在int数据类型中为前导0加前缀。但是如果你看到0前缀那么数字是八进制而不是十进制。可以通过更改基数来创建八进制值。为此,您可以使用类似Integer的包装类。

但如果想要显示数据的前导0,那么他/她可以使用以下代码

public class Sample
{
public static void main(final String[] argv)
{
    System.out.printf("%06d", 1223);
    System.out.println();
}
}