2012-02-29 4 views
1

Я использую строку как abcd как аргумент командной строки в своем java-коде. Мне нужно передать эту строку в код C JNI, который должен взять эту строку и использовать ее как идентификатор разделяемой памяти. Я ищу, чтобы знать, как и где я могу заставить эту строку представлять значение гекса.Преобразование входной строки в виде представления шестнадцатеричного числа

ответ

0

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

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

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

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

0
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)); 
} 
} 
Смежные вопросы