连接两个整数

时间:2013-01-09 12:13:14

标签: iphone ios objective-c integer concatenation

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

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

对于例如:我想使用两个不同的整数 00 00 创建一个整数说 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 标记。这就是为什么所有都必不可少的原因。所以我的主要问题从这里开始。

我有一个 tableview ,其中包含自定义单元格。此自定义单元格包含超过10个文本字段。现在,我想要唯一标识所有文本字段进行编辑。这就是为什么该文本字段的标记必须是由两个名为 rowNumber textFieldNumber 的值连接的整数(表示10中的textField)。

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

6 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

尝试使用它:

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);

希望这会对你有所帮助。

但不要像这样“int num1 = 00”初始化,因为它只在num1中初始化为“0”。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

将第一个整数乘以100并将第二个整数加到其中。您应该能够使用以下方式打印它:

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

将放置前导零。

答案 4 :(得分:0)

您可以将其填充为:

注意:num1和num2都必须是2位数。如果它的大小增加那么它就不会起作用。

int num1 = 00;
int num2 = 00;
NSString *str = [NSString stringWithFormat:@"%d%d",num1,num2];
int num = [str intValue];
NSLog(@"num = %04d",num);

答案 5 :(得分:0)

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

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