|
|
|
Вопрос по кодировкам
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть криптографическая dll библиотека (WinLib.dll). Для доступа к её функциям я создал промежуточную библиотеку для доступа к WinLib.dll через jni. В WinLib.dll есть функция sign(char *data, char *msg, int msgLen). После выполнения sign, в msg записываются данные, в msgLen значение 717. Msg я возвращаю в java код как byte[]. Код для тестирования функций библиотеки: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Пробовал возвращать из signData не byte[], а String. Из кода промежуточной библиотеки для signData делаю так: ...... Код: plaintext 1. 2. 3. 4. 5. 6. 7. Теперь тестовый файл: Код: java 1. 2. 3. 4. 5. 6. 7. 8. Собственно вопрос. Почему получается так, что new String(msg) "обрезает" байты? Почему во втором случае (когда возвращается String) колличество байт в 2 раза меньше? [i]Видимо в с++ char занимает 1 байт. Когда создаётся строка в java, то для каждого символа используется 2 байта. Причём, как я понял, берётся 2 символа, которые занимают по байту, и "соединяются" в один символ из 2 байт Как можно сделать так, чтобы значение msg, полученное из функции dll-библиотеки занимало тоже 717 байт и не обрезалось? Спасибо за помощь!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 19:20:15 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=279&tid=2131349]: |
0ms |
get settings: |
22ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
50ms |
get topic data: |
23ms |
get forum data: |
6ms |
get page messages: |
78ms |
get tp. blocked users: |
3ms |
| others: | 340ms |
| total: | 562ms |

| 0 / 0 |
