-4

这可能是最简单的问题,但目前,我对如何实现这一点没有任何想法。

好的,问题是如何连接两个整数。

例如:我想使用两个不同的整数0000创建一个整数0000。我尝试使用NSString,但失败了。

我的代码是:

                int num1 = 00;
                int num2 = 00;
                NSString *str = [NSString stringWithFormat:@"%d%d",num1,num2];
                int num = [str intValue];
                NSLog(@"num = %d",num); // It Logs 0 but I want 0000.

有没有人有更好的想法?

编辑 :

请注意,我想用那个num来设置textfield标签。这就是为什么所有的都是必不可少的。所以我的主要问题从这里开始。

我有一个包含自定义单元格的表格视图。自定义单元格10 多个文本字段。现在我想唯一标识所有要编辑的文本字段。这就是为什么该文本字段的标记必须是由名为rowNumbertextFieldNumber的两个值连接的整数(表示 10 个中的哪个文本字段。)。

所以我的问题是我想做的是对还是错?如果没有,那么给我一些有用的解决方案。

4

6 回答 6

3

整数数据类型(例如int)仅存储整数值,不存储格式信息。因此,您丢失了前导零的数量(不影响整数值,即 0、00 和 0000 是相同的整数:零)。

如果您希望保留格式信息,则必须单独存储。一种简单的方法是只存储字符串本身。或者,如果您总是希望具有相同的位数,请更改格式字符串:

int num1 = 0;
int num2 = 0;
NSString *str = [NSString stringWithFormat:@"%02d%02d",num1,num2];

在上面的代码之后,str"0000". 但是,将其转换为int然后使用%d格式记录会0再次生成(因为 0000 和 0 是相同的整数)。

编辑:为了生成用于标记的唯一整数,给定行号 ( rowNumber) 和文本字段号 ( textFieldNumber),使用如下公式:

tagNumber = rowNumber * 100 + textFieldNumber;

这样,第 0 行的文本字段将有数字 0..99,第 1 行的文本字段将有 100..199,依此类推。如果每行需要超过 100 个文本字段,只需乘以更大的数字,例如 1000。

在整数算术中,这些值可以通过以下方式转换回行号和字段号:

 rowNumber = tagNumber / 100;
 textFieldNumber = tagNumber % 100;
于 2013-01-09T12:28:07.617 回答
2

Try to use this:

int num1 = 0;
int num2 = 0;
int num3=0;
int num4=0;
NSString *str = [NSString stringWithFormat:@"%d%d%d%d",num1,num2,num2,num3];
int num = [str intValue];
NSLog(@"num = %0*d",str.length,num);

Hope this helps you.

but dont init as like this "int num1=00" because it init "0" only in num1.

于 2013-01-09T12:25:30.700 回答
0

Multiply the first integer with 100 and add the second integer to it. You should be able to print it using:

NSLog([NSString stringWithFormat:@"%04d", sum]);

which will put leading zeros.

于 2013-01-09T12:24:50.433 回答
0

You can pad it as :

NOTE: both the num1 and num2 must be of 2 digits. If its size increases then it wont work.

int num1 = 00;
int num2 = 00;
NSString *str = [NSString stringWithFormat:@"%d%d",num1,num2];
int num = [str intValue];
NSLog(@"num = %04d",num);
于 2013-01-09T12:25:17.987 回答
0

如果打印不是真正的问题,那么我想您需要一个乘法因子来设置标签,让它为 10000 并将其添加到某个序列号中以获得唯一的标签值。

或者您可以使用 num 作为字符串并在 for 循环中乘以 10 num.length 次

于 2013-01-09T12:32:46.030 回答
0

为什么把它变回int?您应该打印刚刚格式化的字符串:

NSLog(@"num = %@",str);

作为数字,0 和 0000 之间没有区别。整数只保留值,而不是格式(这就是字符串的用途)。

于 2013-01-09T12:14:25.930 回答