2013-10-28 3 views
0

Я использую API, который дает мне результат в 32-битных (4 байтовых) данных. Мне нужно декодировать это значение в другом формате, чтобы использовать его.Преобразование десятичного в двоичный, а затем двоичный в неизвестный формат?

Пример данных может быть:

645 --> (00000000 00000000 00000010 10000101) --> (0, 0, 2, 133) 

я буду получать 645 от API, который мне нужно сначала преобразовать в двоичный формат, а затем в неизвестный формат, который я не умею understand.I может преобразовать "645" в двоичном формате, используя следующий код:

public static void toBinary(String value){ 
     int i = Integer.parseInt(value); 
     System.out.println(Integer.toBinaryString(i)); 
    } 

выход: 100000000000000000

Но как мне добраться до (0,0,2,133), чтобы использовать его в своем приложении. Может кто-нибудь, пожалуйста, помогите мне сообщить, какой формат это?

+0

Это формат базы 10 (десятичное) отдельных цифр. –

+0

Вы работаете в Java или C#? – Baldrick

+0

Я работаю в java, но добавил тег C#, а потому, что его общий вопрос – user818455

ответ

2

Прежде всего, 645 в базе 2 - 1010000101. (По какой-то причине ваш код дает неправильный результат).

Как только вы осознаете это, я думаю, что довольно просто понять, что «неизвестный формат» может быть достигнут простым разбиением двоичного значения на куски 8 бит (добавление 0 в начале, когда это необходимо), чтобы дать вам промежуточный двоичный код формат, а затем преобразование каждого фрагмента (байта) в десятичное (основание 10).

00000000 в базе 10 0. 00000010 в базе 10, 2. 10000101 в базе 10 составляет 133.

+0

Я получил его после прочтения вашего ответа. – user818455

3

попробовать этот

String s = "(" + (n >> 24 & 0xFF) + ", " + (n >> 16 & 0xFF)+ ", " + (n >> 8 & 0xFF)+ ", " + (n & 0xFF) + ")"; 
+0

Да, OP, это как сделать то, что вы просите (форматируется как String). – Radiodef

+0

@ Evgeniy Я не могу понять, что вы опубликовали как ответ. Пожалуйста, помогите, как я могу это использовать? – user818455

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