Redian新闻
>
版主你为什么删除我帖子
avatar
版主你为什么删除我帖子# Parenting - 为人父母
h*n
1
excel的index转换,数字 -> index
这个具体是什么题,谁能具体说说么,谢谢
avatar
c*2
2
哪里违反规定了?
avatar
s*a
3
A-Z, AA-AZ - ZZ : total 27*26 possibility, so 每个位上-进位不一样
第一个是26进制,往后都是27进制
avatar
h*n
4
got it,多谢楼上的回答
avatar
h*n
5
纠正一下,貌似每个位都是26进制
avatar
h*n
6
share一下我的代码,欢迎指正:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4
{
class ExcelIndexConversion
{
static int CharToInt(char c)
{
if (c < 'A' || c > 'Z')
return -1;
return (int)(c - 'A' + 1);
}
static char IntToChar(int digit)
{
if (digit < 1 || digit > 26)
return '#';
return (char)(digit + 'A' -1);
}
static int IndexToNum(String index)
{
int res = 0;
int digit = -1;
for (int i = 0; i < index.Length; i++)
{
digit = CharToInt(index[i]);
if (digit < 0) return -1;
res = res * 26 + digit;
}
return res;
}
static string NumToIndex(int num)
{
StringBuilder tmpStr = new StringBuilder();
StringBuilder resStr = new StringBuilder();
int digit;
if (num < 1)
{
resStr.Append("#");
return resStr.ToString();
}
else if (num < 27)
{
//如果只有一位要进行特别处理。。。
return IntToChar(num).ToString();
};
do
{
digit = num % 26;
tmpStr.Append(IntToChar(digit));
num = num / 26;
}while(num != 0 );
String tmp = tmpStr.ToString();
//reverse the string
for (int i = tmp.Length - 1; i >= 0; i--)
{
resStr.Append(tmp[i]);
}
return resStr.ToString();
}
static void Main(string[] args)
{
String testIndex = "AABB";
String resString;
int res = IndexToNum(testIndex);
resString = NumToIndex(res);
}
}
}
avatar
l*a
7
why 27 based?
void Get(int n)
{
stack s;
while(n)
{
int reminder=n%26;
if(reminder==0) {s.push('Z');n=n-26;}
else { s.push(char(reminder+'A'-1));n=n-reminder;}
n/=26;
}
while(!s.empty())
{
cout<s.pop();
}
cout<
}

【在 s****a 的大作中提到】
: A-Z, AA-AZ - ZZ : total 27*26 possibility, so 每个位上-进位不一样
: 第一个是26进制,往后都是27进制

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。