Мне нужно поместить информацию о Java в строку, поэтому я использую конструктор String(byte[] arrB)
. Теперь эта информация отправляется программе C как тип char*
. Теперь мне нужно вернуть исходные байты, так как, насколько я понимаю, они были закодированы в процессе создания Java String
.
Как я могу сделать это в программе C?
Итак, на стороне C у меня есть эти байты:
7e 53 e9 94 d4 46 f5 7c 66 cf 85 34 18 5a ff 6 2d a3 89 48 d2 e4 46 b8 6b 43 ec 64 3a 67 f9 2 6d 12 ac e7 0 c4 99 52 68 76 76 77 12 2 de 7d 5b e7 4e 5 6 73 f4 fc 91 54 12 71 64 7a 25 3d
Они находятся в char*
, но достигают Java как строку, а строка:
7E 53 EF BF BD EF BF BD 46 EF BF BD 7C 66 CF 85 34 18 5A EF BF BD 06 2D EF BF BD EF BF BD 48 EF BF BD EF BF BD 46 EF BF BD 6B 43 EF BF BD 64 3A 67 EF BF BD 02 6D 12 EF BF BD EF BF BD
Как видите, много общего...
libpam
. Я использовал оболочкуlibpam4j
для этого сообщения. Мы можем передавать информацию из приложения в модуль PAM, используяpam_conv
(разговоры), и единственный способ — поместить ее в строку со стороны Java и вызвать функциюlibpam4j
. Кодировку не указал... - person João Rodrigues   schedule 19.12.2014