Я программирую RTP в Java для моих исследований. для заголовка, согласно rfc, у меня есть массив из 12 байтов.
The RTP header has the following format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Чтобы преобразовать мои значения, я решил использовать целое число в строке, а затем преобразовать его в байтовый массив. Мои целые числа (каждая строка) выглядят хорошими при отображении в двоичном виде, но при преобразовании в байтовый массив первый байт выглядит следующим образом: 0xff 0xff 0xff 0x [правильное значение]
Похоже, у меня 4 байта в одномbyte (странно звучит)
Моя функция массива int to bytes не от меня, а выглядит так:
public static byte[] toByteArray(int number) {
int temp = number;
byte[] b=new byte[4];
for (int i = b.length - 1; i > -1; i--) {
b[i] = new Integer(temp & 0xff).byteValue();
temp = temp >> 8;
}
return b;
}
Есть ли у вас какие-либо идеи, откуда произошла моя ошибка и почему этот результатвозможно?
thx