Tejas Sawant 13 Ответов: 1

Код C# в код JAVA


Я приложил много усилий, погуглил и перепробовал все возможные способы. Но я не получил удовлетворения, поэтому в конце концов пришел сюда.

Я хочу преобразовать нижеприведенную строку кода [C#] в java.

1] метод, используемый для преобразования IP в uint
private uint GetIP(string strIp)
       {
           System.Net.IPAddress ipaddress = System.Net.IPAddress.Parse(strIp);
           uint lIp = (uint)ipaddress.Address;
           
           lIp = ((lIp & 0xFF000000) >> 24) + ((lIp & 0x00FF0000) >> 8) + ((lIp & 0x0000FF00) << 8) + ((lIp & 0x000000FF) << 24);
           MessageBox.Show(strIp + " = " + lIp);
           return (lIp);
       }



2] метод, используемый для преобразования строки в IntPtr

IntPtr iPtr = Marshal.StringToHGlobalAnsi("Hello");


Пожалуйста, помогите мне как можно скорее. Заранее спасибо.

Я очень ценю помощь.

Что я уже пробовал:

Я попробовал следующий код для преобразования IP в Long, не уверен, правильно это или неправильно .

публичный статический долго ipToLong(строку IP-адрес) {

String[] ipAddressInArray = ipAddress. split("\\.");

длительный результат = 0;
for (int i = 0; i < ipAddressInArray. length; i++) {

int power = 3-i;
int ip = Integer. parseInt(ipAddressInArray[i]);
результат += ip * Math. pow(256, мощность);

}

возвращаемый результат;
}

Для строки указателя IntPtr, пытался преобразовать строку в ASCII, а затем попытался использовать целочисленная по ссылке.

[no name]

Если вы не уверены, правильно это или нет, почему бы вам не пойти и не попробовать сначала.

Tejas Sawant 13

Мне нужны предложения и мнения, поэтому я пишу здесь.

Richard MacCutchan

Вчера я сделал тебе предложение; иди и попробуй.

Tejas Sawant 13

Спасибо за отличное предложение. Код работает нормально, я спрашивал, правильный ли это подход или что-то еще нужно сделать.

Пожалуйста, предложите какой-нибудь java-код для приведенной ниже строки кода C#

IntPtr iPtr = Маршал.StringToHGlobalAnsi ("Привет");

Richard MacCutchan

В Java нет эквивалента. Я предлагаю вам прочитать разделы об обработке интернет-сообщений в документации Java.

Tejas Sawant 13

int SendText(int rowNo, const char *pText);

Я импортировал одну dll-библиотеку в java-проект. Мне нужно вызвать вышеприведенный метод, как я могу вызвать этот метод.

В C# мы можем вызвать вышеуказанный метод, как показано ниже

SendText(1, Маршал.StringToHGlobalAnsi ("Привет"));

Как я могу сделать то же самое на java ?

Richard MacCutchan

Вам нужно использовать собственный интерфейс Java, см. Java SE 7 Java Native Interface-связанные API и руководства для разработчиков[^].

Tejas Sawant 13

Да, я использовал JNI, я успешно импортировал dll. Но я не могу вызвать только этот метод.

Richard MacCutchan

Извините, но я понятия не имею, какую библиотеку DLL вы пытаетесь использовать или почему вы не можете вызвать какой-то код. Как я уже сказал выше, нет простого эквивалента Java для кода C#, который вы показали. Вам нужно изучить библиотеку DLL и ее документацию и написать необходимый код JNI, чтобы получить доступ к ней из Java.

Tejas Sawant 13

Эй, Ричард, Спасибо за комментарии.Я ценю ваши усилия.

DLL разработана на языке Си . Я использую эту библиотеку dll для связи с оборудованием. Поэтому мне тоже нужно вызвать этот метод.

1 Ответов

Рейтинг:
1

Richard MacCutchan

Видеть InetAddress (Java Platform SE 7 )[^].


Maciej Los

5ед!