Java без знака Char Array - PullRequest
       10

Java без знака Char Array

1 голос
/ 16 марта 2009

Я работаю над проектом, посвященным медиаплееру. Я написал генератор файлов на Java и преобразовал генератор CRC из исходного кода сжатия, написанного на C. Я могу прекрасно записывать данные с помощью DataOutputStream, но я не могу понять, как отправить данные в виде массива без знака в Java. В Си это очень простой процесс. Я довольно тщательно искал решение, и лучшее решение, которое я нашел, это просто отправить данные в C и позволить C вернуть CRC. Я, возможно, просто не ищу правильно, потому что я довольно незнаком с этим материалом. Большое спасибо за любую помощь.

Ответы [ 3 ]

6 голосов
/ 16 марта 2009

Вы определенно хотите байт []. «Байт» эквивалентен знаковому символу в C. «Java» char - это 16-битное значение в кодировке Unicode и на самом деле совсем не эквивалентно.

Если это для размытия, если в функции CRC, которую вы используете, нет ничего особенного, я думаю, вы могли бы просто использовать:

import java.util.Random;
Random randgen = new Random();

byte[] fuzzbytes = new byte[numbytes];
randgen.nextBytes(fuzzbytes);
outstream.write(fuzzbytes, 0, numbytes);
2 голосов
/ 16 марта 2009

Я сомневаюсь, что вы хотите что-то сделать с персонажами. Я не вижу ничего в вашем описании, которое предлагает текст манипуляции, что вы бы сделали с символами.

Вы хотите использовать байтовый массив. Немного неприятно, что байты подписываются в Java, но байтовый массив - это то, что у вас есть - просто работайте с битовыми шаблонами, а не воспринимайте их как действительные числа и тщательно проверяйте каждую операцию.

0 голосов
/ 16 марта 2009

Большинство операторов CRC используют в основном побитовые сдвиги и XOR. Они должны хорошо работать на Java, которая не поддерживает целочисленные примитивы без знака. Если вам нужна другая арифметика для правильной работы, вы можете попробовать привести к short .

...