求格式化字符算法一个
//想格式化数据为数据加字符的方式,如1 -> 1 ,10-> A,同时去除I,O等易混字符,现在的算法在上1000的时候,格式话数据就存在问题,eg:999格式化为ZZ了,1000应该是A00
string strWaterNo = StartValue;
string strWaterNoChr = string.Empty;
int WaterNoCnt = 0;
while (WaterNoCnt < Length - TempDocNo.Length)
{
int WaterNoDigit = int.Parse(((int.Parse(strWaterNo) / int.Parse(Math.Pow(32, WaterNoCnt).ToString())) % 32).ToString());//算公式111/0%32,111/32%32
if (WaterNoDigit < 10)
{
// WaterNoChr = "0 " + WaterNoDigit.ToString()+ WaterNoDigit.ToString();
string strTemp = "0 " + WaterNoDigit.ToString();
strWaterNoChr = Convert.ToString(strTemp).Substring(strTemp.Length - 1, 1) + strWaterNoChr;
}
else
{
int intTempWaterNoDigit = WaterNoDigit + 55;
int intTempWaterCharShift = 0;
if (intTempWaterNoDigit > = 72)//减少判断次数,字母I之前不用判断
{
if (intTempWaterNoDigit + intTempWaterCharShift > = (int) 'I ')
intTempWaterCharShift = intTempWaterCharShift + 1;
if (intTempWaterNoDigit + intTempWaterCharShift > = (int) 'O ')
intTempWaterCharShift = intTempWaterCharShift + 1;
if (intTempWaterNoDigit + intTempWaterCharShift > = (int) 'U ')
intTempWaterCharShift = intTempWaterCharShift + 1;
if (intTempWaterNoDigit + intTempWaterCharShift > = (int) 'V ')
intTempWaterCharShift = intTempWaterCharShift + 1;
}
strWaterNoChr = Convert.ToString((char)(intTempWaterNoDigit + intTempWaterCharShift)) + strWaterNoChr;
}
WaterNoCnt++;
}
[解决办法]
顶
[解决办法]
具体转换原理说清楚点 代码太乱
[解决办法]
说清楚一下原理,看不明白
[解决办法]
static char[] IntIndexToLetter(int no)
{
List <int> intArray = new List <int> ();
while (no > 0)
{
if (no % 34 == 0)
{
intArray.Add(34);
no = (no - 34) / 34;
}
else
{
intArray.Add(no % 34 + 1);
no = no / 34;
}
}
intArray.Reverse();
char[] chrArray = new char[intArray.Count];
for (int i = 0; i < intArray.Count; i++)
{
if (intArray[i] <= 10)
{
chrArray[i] = (char)(intArray[i] + 47);
}
else if (intArray[i] - 10 + 64 < (int) 'I ')
{
chrArray[i] = (char)(intArray[i] - 10 + 64);
}
else if (intArray[i] - 10 + 64 < (int) 'O ')
{
chrArray[i] = (char)(intArray[i] - 10 + 64 + 1);
}
else
{
chrArray[i] = (char)(intArray[i] - 10 + 64 + 2);
}
}
return chrArray;
}
[解决办法]
1 -> 1 ,10-> A
那么100,1000呢?
------解决方案--------------------
帮顶一下,不明白想干啥
[解决办法]
晕,我的这个算法也不行
因为我之前是进行EXCEL的字母索引转换,所以进制是从1开始.
你这里是从0开始
[解决办法]
楼主就是想做一个34进制转换
[解决办法]
34进制?10-》A是34进制?更不明白了
[解决办法]
顶
[解决办法]
看看吧
[解决办法]
会笔算进制转换就会做的了~~~~
[解决办法]
的确 会笔算进制转换就会做的了