J'ai une situation où j'ai un tableau de caractères hexadécimaux comme ce qui suit:Convertir tableau hexagonal en C et à long en C à chaîne en 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;
Le code ci-dessus est en C. Je dois convertir ce tableau en une valeur longue. La valeur longue doit ensuite être envoyée dans le code Java, où elle doit être convertie en chaîne.
C array ---> long value ---> Java String
L'objectif final est d'obtenir une chaîne en Java initialisé comme indiqué ci-dessous:
// Java code
String goal = "b2002779";
Quelle serait la méthode recommandée pour le faire?
J'ai essayé de convertir le tableau C char en long en utilisant ce answer, mais il a retourné 0. D'autres suggestions?
Je vous suggère d'utiliser 'unsigned char' sauf si' 0xb2' est censé être négatif. 'long' est signé. –
Quand vous dites 'long', est-ce un' long' (32 bits) ou un Java 'long' (64 bits)? – Aubin
NB: votre tableau d'entrée n'est pas un "caractère hexadécimal". C'est ainsi que vous l'avez défini comme humainement lisible. Un tableau 'unsigned char' ne sait rien sur hex, ce sont des valeurs binaires. Si vous voulez des "caractères hexadécimaux", définissez-les comme une chaîne et passez cette chaîne à Java. 'char myhex [] =" b2002779 ";' –