Я работаю над проектом, пугающим медиаплеер. Я написал генератор файлов в Java и преобразовал генератор CRC из исходного кода сжатия, написанного на C. Я могу написать данные с помощью DataOutputStream, но я не могу понять, как отправлять данные в виде массива без знака в java. В C это очень простой процесс. Я искал решение довольно тщательно, и лучшее решение, которое я нашел, - просто отправить данные на C и позволить C вернуть CRC. Я просто не могу правильно искать, так как я довольно незнакома с этим. Большое спасибо за любую помощь.Java Unsigned Char Array
ответ
Вам определенно нужен байт []. «Байт» эквивалентен подписанному символу в C. «char» Java - это 16-разрядное значение unicode и совсем не эквивалентно.
Если это для фаззинга, если не что-то особенное о функции CRC, которую вы используете, я полагаю, вы могли бы просто использовать:
import java.util.Random;
Random randgen = new Random();
byte[] fuzzbytes = new byte[numbytes];
randgen.nextBytes(fuzzbytes);
outstream.write(fuzzbytes, 0, numbytes);
Я определенно использую случайные байты для фактических аудиоданных, но сейчас я пытаюсь создать законные заголовки и искать точки и т. Д. Спасибо, хотя, я обязательно попробую массив байтов. – grossmae
Сомневаюсь, что вы хотите что-то делать с персонажами. Я не вижу ничего в вашем описании, которое предлагает текст манипуляции, что и делать с персонажами.
Вы хотите использовать массив байтов. Это немного боль, которую байты подписываются в Java, но массив байтов - это то, что у вас есть - просто работайте с битовыми шаблонами, а не думайте о них как о фактических числах и тщательно проверяйте каждую операцию.
Это похоже на то, что он борется с аспектом подписи, а не тем, что эквивалентно Java эквиваленту C, нет? Тем не менее, совет по шаблону бит. –
Мэтт: Хотя я подозреваю, что OP борется с подписью, факт, что «байт» не появляется один раз в описании, делает довольно неясным, что они знают, что они должны использовать байтовый массив. –
Большинство операторов CRC используют в основном побитовые сдвиги и XOR. Они должны отлично работать на Java, который не поддерживает беззнаковые целочисленные примитивы. Если вам нужна другая арифметика для правильной работы, вы можете попробовать лить в короткий.
- 1. Ввод в Unsigned Char Array
- 2. unsigned char array из 8 бит в unsigned char
- 3. char * to array <unsigned char ^>
- 4. Преобразование unsigned char (array) в unsigned int (array)
- 5. C++ char array copy to unsigned char array
- 6. char * (Array) cast to unsigned long + 1?
- 7. Ncurses c/C++ - getstr() unsigned char array
- 8. C - unsigned int to unsigned char array преобразование
- 9. Unsigned char std :: vector to unsigned char []?
- 10. Добавить unsigned char * в unsigned char *
- 11. Java char array
- 12. Java 2d char array
- 13. Как объявить массив unsigned char в java?
- 14. Как преобразовать массив <unsigned char> в unsigned char []?
- 15. C - unsigned char * to char
- 16. char * и unsigned char * casting
- 17. appending char to char array java
- 18. populating 2d array java с char array
- 19. преобразование unsigned char в C++ в java
- 20. SWIG Java - обнуление unsigned char [] в байте []
- 21. Arduino: Неопределенная ссылка на `I2CRW :: readByte (unsigned char, unsigned char) '
- 22. C++ cast char * to unsigned char
- 23. C++ массив массивов unsigned char
- 24. Преобразование вектора <unsigned char> в const unsigned char *
- 25. String to char array Java
- 26. Java: 2D char array search
- 27. Ошибка Java Char Array Ошибка
- 28. Java: 2-мерный char Array
- 29. Java char array to int
- 30. Reinterpret float vector as unsigned char array и обратно
Почему вы выбрали порт процедуру CRC от С до Java? Это нестандартно? Я спрашиваю, потому что, возможно, будет легче найти тот, который был первоначально написан на Java, и, вероятно, он будет более оптимизирован, чем порт с другого языка. –