2012-03-15 3 views
0

Есть некоторые типы данных, которые присутствуют на C, но недоступны на Java. Я перечислил некоторые из них и написал их замену на Java. Пожалуйста, предложите, если я правильно сделал это или некоторые изменения должны быть сделаны:Сопоставление данных с C на Java

неподписанные символ -> короткие

беззнаковое короткое -> Int

неподписанные символ * х -> короткий [] х

беззнаковое короткое * х -> ИНТ [] х

символ * х -> Строка

неподписанных Int -> длинный

+0

Определите «замену». –

+0

@OliCharlesworth Я работаю над проектом, и мне нужно написать эквивалентный (вроде конвертировать) код C в java. –

+1

Хорошо. Но вы должны помнить, что типы данных в C не имеют стандартизованных размеров, в отличие от тех, что в Java. –

ответ

1

Для unsigned char вы должны использовать Java char, который также является неподписанным. Остальные в порядке, поскольку они являются инъективными (при условии, что обычно используются размеры в C), то есть они будут сохранять значения, хотя вопрос довольно сложный с указателями/массивами.

+0

Я использовал short, потому что char в Java представляет символ Юникода, что может привести к некоторым проблемам. –

+0

@Rog Matthews: произвольно закодированные текстовые данные обычно представлены в виде байта [] в Java - вы не найдете способ, например. конвертировать короткий [] в String.Учитывая, что стандарт C гарантирует, что char и byte имеют одинаковый размер, было бы лучше сопоставить unsigned char в C с подписанным байтом в Java. –

+0

@Rog Matthews: он, разумеется, взорвется, если байт - это всего лишь 8 бит - такие архитектуры существуют, но вы вряд ли столкнетесь с ними. –

0

Я хотел бы использовать следующую

символ без знака -> символ (16-бит) или короткий (15-бит) или/* подписан */байт (8 бит)

без знака короткого -> int или/* signed */short.

неподписанные символ * х -> байты [] х

беззнаковый короткий * х -> короткий [] х

символ * х -> Строка или символ [] или пользовательский класс, который оборачивает байты []

неподписанных Int -> длинный или/* подписан */INT

Во многих случаях вы можете использовать подписанный тип, если ранее вы использовали бы без знака типа. Часто вам нужны мелкие обходные пути, но иногда вам не нужно ничего делать.

+0

char в java без знака !!! –

+0

Это правда, но если у вас есть данные, которые являются 8-битными символами, вы можете использовать символ, короткий или байт. –

0

Java имеет следующие примитивные типы данных, байт
короткий
INT долго
поплавок
двойной
символ
булева ложь

для неподписанные символ * х следует использовать строку или обугленного [ ] или byte [] для unsigned char вы должны использовать char , а для unsigned int вы можете использовать int или long (зависит)

Смежные вопросы