我需要编写一个Objective-C函数来将十进制整数转换为base-26字符串,如下例所示。并且反过来。
0 = A
1 = B
2 = C
...
25 = Z
26 = AA
27 = AB
28 = AC
等
答案 0 :(得分:1)
似乎你想要创建一个基数为26的数字。所以它与基数为2的位数或基数为10的小数没有区别。但是你的模型缺少0
每个数字都有一个从右到左的电源基础。比特:
2^3 2^2 2^1 2^0
1 0 1 1
现在多了一点力量和所有值的总和:
2^3=8x1=8
2^2=4x0=0
2^1=2x1=2
2^0=1x1=1
所以1011的十进制值是11。
与您的基础相同(假设a = 0,z = 25)
26^2 26^1 26^0
b z z
26^2=676*b(1) =676
26^1=26 *z(25)=650
26^0=1 *z(25)=25
所以bzz的值= 1351
现在你已经掌握了基础,应该能够创建你的方法; - )
答案 1 :(得分:0)
我创建了一个recurcive功能来执行此操作
+ (NSString *)alphaValueForNum:(int)num {
NSDictionary *charInfo = @{@"A": @0,
@"B": @1,
@"C": @2,
@"D": @3,
@"E": @4,
@"F": @5,
@"G": @6,
@"H": @7,
@"I": @8,
@"J": @9,
@"K": @10,
@"L": @11,
@"M": @12,
@"N": @13,
@"O": @14,
@"P": @15,
@"Q": @16,
@"R": @17,
@"S": @18,
@"T": @19,
@"U": @20,
@"V": @21,
@"W": @22,
@"X": @23,
@"Y": @24,
@"Z": @25};
NSString *letter = [[charInfo allKeysForObject:[NSNumber numberWithInt:(num % 26)]] lastObject]; // ((num % 26));
int remain = floor(num/26);
return (remain > 0) ? [NSString stringWithFormat:@"%@%@",[self alphaValueForNum:(remain-1)],letter] : letter;
}