преобразование входной строки в виде шестнадцатеричного числа - PullRequest
1 голос
/ 29 февраля 2012

Я принимаю строку типа "abcd" в качестве аргумента командной строки в моем коде Java. Мне нужно передать эту строку в мой код JNI C, который должен взять эту строку и использовать ее в качестве идентификатора общей памяти. Я ищу, чтобы узнать, как и где я могу сделать эту строку, чтобы представлять значение hexa.

Ответы [ 4 ]

0 голосов
/ 29 февраля 2012
public class HexString {
    public static String stringToHex(String base)
    {
     StringBuffer buffer = new StringBuffer();
     int intValue;
     for(int x = 0; x < base.length(); x++)
         {
         int cursor = 0;
         intValue = base.charAt(x);
         String binaryChar = new String(Integer.toBinaryString(base.charAt(x)));
         for(int i = 0; i < binaryChar.length(); i++)
             {
             if(binaryChar.charAt(i) == '1')
                 {
                 cursor += 1;
             }
         }
         if((cursor % 2) > 0)
             {
             intValue += 128;
         }
         buffer.append(Integer.toHexString(intValue) + " ");
     }
     return buffer.toString();
}

public static void main(String[] args)
    {
     String s = "abcd";
     System.out.println(s);
     System.out.println(HexString.stringToHex(s));
}
}
0 голосов
/ 29 февраля 2012

Все, что вам нужно, это:

Integer.parseInt("abcd", 16);
0 голосов
/ 29 февраля 2012

Java или C?В C вы используете strtoul:

#include  <stdlib.h>

int main(int argc, char * argv[])
{
    if (argc > 1)
    {
        unsigned int n = strtoul(argv[1], NULL, 16);
    }
}

Проверьте руководство;при синтаксическом анализе пользовательского ввода важно проверять наличие ошибок, и при использовании strtoul.

есть несколько аспектов.
0 голосов
/ 29 февраля 2012

Вы пробовали что-то подобное:

final String myTest = "abcdef";
for (final char c : myTest.toCharArray()) {
    System.out.printf("%h\n", c);
}

Если это то, что вы ищете, вы можете взглянуть на метод printf, он основан на Formatter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...