这可能是最简单的问题,但目前我对如何实现这一点没有任何想法。
好的,问题在于如何连接两个整数。
对于例如:我想使用两个不同的整数 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)。
所以我的问题是我想做的是对还是不对?如果没有,那就给我一些有用的解决方案。
答案 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次