我有一个关于将字符串转换为intvalue的问题。我的问题和问题是如果我有一个名为" 001223" 的字符串,我将 1223 作为intvalue。但我希望将 001223 作为最终的int值。如果我的问题不明确,请告诉我。谢谢你的时间
答案 0 :(得分:3)
数字001223
,1223
,2446/2
或1223.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();
}
}