Java bytebuffer для C - PullRequest
       11

Java bytebuffer для C

0 голосов
/ 16 июня 2009

Из программы на C на Windows нам нужно читать и писать как байтбуфер Java, который хранит двоичный файл в BIG_ENDIAN

Алгоритм описан по адресу: http://mindprod.com/jgloss/binaryformats.html

Нужно читать и писать int и float.

У кого-нибудь есть пример кода C или C ++, который делает это или ссылку?

ТИА, Bert

Ответы [ 2 ]

1 голос
/ 16 июня 2009

Я предполагаю, что трудность заключается в конвертации между Big Endian и Little Endian.

Эта статья должна помочь вам с преобразованиями Endian. Он содержит код для замены порядка байтов на целые числа, длинные целые числа, числа с плавающей запятой и массивы байтов произвольной длины.
http://www.codeproject.com/KB/cpp/endianness.aspx

Код для замены произвольного типа выглядит следующим образом:

#include <algorithm> //required for std::swap

#define ByteSwap5(x) ByteSwap((unsigned char *) &x,sizeof(x))

void ByteSwap(unsigned char * b, int n)
{
   register int i = 0;
   register int j = n-1;
   while (i<j)
   {
      std::swap(b[i], b[j]);
      i++, j--;
   }
}
0 голосов
/ 16 июня 2009

Вы хотите использовать htonl и аналогичные. Остальная часть дизайна - ваша.

...