Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 4

Приведение типов

15.12.2013, 11:55. Показов 724. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть задача - записывать MAC адрес формата IPv4 в безбуквенной форме.

Я нашел пример преобразования в ненужную мне сторону - из безбуквенной формы в "нормальную":
57637679576166776066746360 -> 6CF049D39A63

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
String mac = "57637679576166776066746360";
String newCode = "";
 
     int id=0;
     for(int i = 0; i < mac.length(); i += 2) {
                        String tempStr = mac.substring(i, i + 2);
                        char realCode;
                        if(i == 0) {
                           realCode = (char)Integer.parseInt(tempStr);
                           id = Integer.parseInt(String.valueOf(realCode));
                        } else {
                           realCode = (char)(Integer.parseInt(tempStr) - id);
                           newCode = newCode + realCode;
                        }   
                     }
//newCode = "6CF049D39A63"
А как обратно? 6CF049D39A63 -> 57637679576166776066746360
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2013, 11:55
Ответы с готовыми решениями:

Приведение типов!
Всем привет, наткнулся я на такое высказывание в книге Сьерра К, Бейтс Б. (стр.259) Ссылочная переменная типа Object не может...

Приведение типов object
Есть класс class Class&lt;T&gt; Надо сделать приведение типов из Object в Class&lt;T&gt;. Object obj; Class&lt;T&gt; c = (Class&lt;T&gt;) obj; ...

Каковы три случая, когда надо явно указывать приведение примитивных типов в Java?
Моя наставница по Java после проверки того, насколько хорошо я усвоил материал, сказала, что у меня проблемы с пониманием приведением...

7
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
15.12.2013, 19:40
Ваш код делает следующее:

Берется первая пара цифр, в вашем случае (57) определяется какой символ хранится под этим котом в таблице ASCII (под кодом 57 хранится цифра 9). Таким образом получается ключ - 9.

Продолжая обрабатывать пары чисел с использованием ключа получаем "буквенный код".
63 - 9 = 54; под кодом 54 хранится символ '6'
76 - 9 = 63; под кодом 63 хранится символ 'C'
и тд..

Так вот, для того что бы "обработать обратно" код 6CF049D39A63 нужно каким то образом определить ключ. Как определить ключ я не знаю.

если ключ как то можно вычислить, то проблем вернуть обратно не возникнет
Java
1
(int)NewCode.charAt(i) + ключ;
1
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 4
15.12.2013, 19:46  [ТС]
Спасибо огромное. Позже (я надеюсь) посчитаю ключ и сделаю по-нормальному.

А пока что, я поступил как слабак ))) ВОт так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 private String MakeMac() {
      String tempStr;  
      String newStr = "";  
      
      String InMac = fieldMac.getText().replace(":", "").replace(" ", "");
        for(int i = 0; i < InMac.length(); ++i) {
         tempStr = InMac.substring(i, i + 1);
         newStr = newStr + ConvertSymbol(tempStr);
        }
    return newStr;
    }
    
  private String ConvertSymbol(String tempStr) {
    switch (tempStr) {
        case "0":tempStr = tempStr.replace("0", "57");break;
        case "1":tempStr = tempStr.replace("1", "58");break;
        case "2":tempStr = tempStr.replace("2", "59");break;
        case "3":tempStr = tempStr.replace("3", "60");break;
        case "4":tempStr = tempStr.replace("4", "61");break;
        case "5":tempStr = tempStr.replace("5", "62");break;
        case "6":tempStr = tempStr.replace("6", "63");break;
        case "7":tempStr = tempStr.replace("7", "64");break;
        case "8":tempStr = tempStr.replace("8", "65");break;
        case "9":tempStr = tempStr.replace("9", "66");break;
        case "A":tempStr = tempStr.replace("A", "74");break;
        case "B":tempStr = tempStr.replace("B", "75");break;
        case "C":tempStr = tempStr.replace("C", "76");break;
        case "D":tempStr = tempStr.replace("D", "77");break;
        case "E":tempStr = tempStr.replace("E", "78");break;
        case "F":tempStr = tempStr.replace("F", "79");break;
    }
     return tempStr;
     }
Можно закрывать.
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
15.12.2013, 20:04
Java
1
2
3
4
5
6
int tmp;
        String mac = "";
        for (int i = 0; i < aNewCode.length(); i++)
        {
            mac = mac + String.valueOf((int) aNewCode.charAt(i) + 9);
        }
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
15.12.2013, 20:12
Цитата Сообщение от rkrp2000 Посмотреть сообщение
Спасибо огромное. Позже (я надеюсь) посчитаю ключ и сделаю по-нормальному.

А пока что, я поступил как слабак ))) ВОт так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 private String MakeMac() {
      String tempStr;  
      String newStr = "";  
      
      String InMac = fieldMac.getText().replace(":", "").replace(" ", "");
        for(int i = 0; i < InMac.length(); ++i) {
         tempStr = InMac.substring(i, i + 1);
         newStr = newStr + ConvertSymbol(tempStr);
        }
    return newStr;
    }
    
  private String ConvertSymbol(String tempStr) {
    switch (tempStr) {
        case "0":tempStr = tempStr.replace("0", "57");break;
        case "1":tempStr = tempStr.replace("1", "58");break;
        case "2":tempStr = tempStr.replace("2", "59");break;
        case "3":tempStr = tempStr.replace("3", "60");break;
        case "4":tempStr = tempStr.replace("4", "61");break;
        case "5":tempStr = tempStr.replace("5", "62");break;
        case "6":tempStr = tempStr.replace("6", "63");break;
        case "7":tempStr = tempStr.replace("7", "64");break;
        case "8":tempStr = tempStr.replace("8", "65");break;
        case "9":tempStr = tempStr.replace("9", "66");break;
        case "A":tempStr = tempStr.replace("A", "74");break;
        case "B":tempStr = tempStr.replace("B", "75");break;
        case "C":tempStr = tempStr.replace("C", "76");break;
        case "D":tempStr = tempStr.replace("D", "77");break;
        case "E":tempStr = tempStr.replace("E", "78");break;
        case "F":tempStr = tempStr.replace("F", "79");break;
    }
     return tempStr;
     }
Можно закрывать.
ужасно
попробуйте вызвать этот ваш метод в цикле 100000 раз и вы поймёте о чём я
0
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 4
15.12.2013, 20:25  [ТС]
я знаю, что ужасно.
Мне незачем вызывать это все 100000 раз для генерации одного мак адреса.
0
 Аватар для reisal78
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,925
15.12.2013, 20:29
А вы уверены что приведенный вами в первом сообщении код корректно преобразует мак адрес из 10 в 16 вид?
(Я из любопытства погуглил этот вопрос, и на мой неопытный в этом вопросе взгляд, как то не так код работает).
0
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 4
15.12.2013, 20:34  [ТС]
у меня задача, как раз обратной конвертации. Все норм. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2013, 20:34
Помогаю со студенческими работами здесь

Приведение типов сырых типов
class Gen&lt;T&gt; { T ob Gen(T o) { ob=o; } T getob(){ return ob; } public class RawDemo {

Приведение типов
Всем привет! Изучаю онлайн курсы на одном сайте. В практической части столкнулся со следующим заданием: Найдите и исправьте ошибки. ...

Приведение типов
вот почему. ну почему. так можно short s3 = 10+11; а вот так нельзя? short s1 = 10; short s2 = 11; short s4 = s1 + s2;...

Приведение типов
Доброго времени суток! Есть кусочек кода) byte b = 1; b = b + 1; Здесь понятно, что ошибка компиляции, т.к 1 - int, следовательно i...

Приведение типов
Начался копаться в потрохаx библиотеки(1.8.60) и наткнулся на странный момент, в классе Byte есть некий статический метод: /** *...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru