У меня есть ситуации, когда у меня есть массив шестнадцатеричных символов вроде следующего:Преобразовать шестнадцатеричный массив в C долго в C в строку в Java
// C code
char arr[4];
// Using printf with 0x%02x format specifier, I can see the following contents:
arr[0] --> 0xb2;
arr[1] --> 0x00;
arr[2] --> 0x27;
arr[3] --> 0x79;
выше код на C. Мне нужно преобразовать этот массив в длинном значении. Затем длинное значение должно быть отправлено в код Java, где его нужно преобразовать в строку.
C array ---> long value ---> Java String
Конечной целью является, чтобы получить строку в Java инициализирован, как показано ниже:
// Java code
String goal = "b2002779";
Что бы рекомендуемый способ сделать это?
Я попытался преобразовать массив символов C в длинный, используя этот answer, но он вернул 0. Любые другие предложения?
Я предлагаю вам использовать 'unsigned char', если' 0xb2' не будет отрицательным. 'long' подписан. –
Когда вы говорите 'long', это C' long' (32 бита) или Java 'long' (64 бит)? – Aubin
NB: ваш входной массив не является «шестнадцатеричным символом». Это было так, как вы определили его как читаемый по-человечески. Массив 'unsigned char' ничего не знает о hex, это двоичные значения. Если вы хотите, чтобы «шестнадцатеричные символы» определялись как строка и передавали эту строку в java. 'char myhex [] =" b2002779 ";' –