2016-02-22 3 views
-1

Мне нужно преобразовать пятизначное целое число в буквенно-цифровую строку длиной 5. Приближение ниже, но иногда оно не содержит буквенно-числовое, но числовое значение.Преобразование целых чисел в алфавитно-цифровые строки

Long x = 12345L; 
String code = Long.toHexString(x).toUpperCase(); 

Я хочу получить буквенно-цифровую строку длиной 5 всегда.

+0

К сожалению это была опечатка – RE350

+0

Что вы имеете в виду под "буквенно-цифровое значение"? Вы хотите преобразовать его в String? – Maroun

+0

Скажите, например: 12345 -> A12BC – RE350

ответ

1

Это не удивительно.

Например, это 0x1234574565, поэтому 74565 не содержит какой-либо из цифрA к F при преобразовании в шестнадцатеричном формате.

Учитывая, что 99999 является 0x1869F, у вас есть много места в вашей преобразованной строке для размещения некоторых данных «мусорных», рассмотреть вопрос о введении аддитивной константы (0xA0000, возможно, по меньшей мере гарантии, по крайней мере один буквенный знаком для положительных входов), или даже номер, который ваш XOR с вашим оригиналом.

1

Попробуйте этот

static String alphaNumric(int value) { 
    String s = "abcde" + Integer.toString(value, 36); 
    return s.substring(s.length() - 5); 
} 

и

int[] tests = { 12345, 1, 36, 36 * 36, 32767, 99999 }; 
    for (int i : tests) 
     System.out.println(i + " -> " + alphaNumric(i)); 

OUTPUT

12345 -> de9ix 
1 -> bcde1 
36 -> cde10 
1296 -> de100 
32767 -> depa7 
99999 -> e255r 
Смежные вопросы