Переменная Длина Количество от C до Objective-C - PullRequest
0 голосов
/ 20 июня 2011

Как я могу преобразовать int в VLQ в Objective-C, в основном, чтобы я мог получить вариант как в http://code.google.com/apis/protocolbuffers/docs/encoding.html

Я нашел это (из http://rosettacode.org/wiki/Variable-length_quantity) и хотел бы знать, как преобразовать его в Objective-C?

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

#define BUFLEN 8

#define MAX_UINT32_AS_VLQ 8
size_t uint32_to_vlq(uint32_t number, uint8_t *buf, size_t buflen)
{
  uint8_t ibuf[MAX_UINT32_AS_VLQ];
  size_t written = 0, i;

  if (buflen == 0) return 0;

  if ( number < 128 )
  {
    *buf = number;
    return 1;
  }

  ibuf[0] = number & 0x7f; 
  written++;
  number >>= 7;
  while(number > 0)
  {
    ibuf[written] = (number & 0x7f) | 0x80;
    number >>= 7;
    written++;
  }

  if (written > buflen) return 0;

  for(i = 0; i < written; i++) buf[i] = ibuf[written-i-1];

  return written;
  }

Заранее спасибо

1 Ответ

4 голосов
/ 20 июня 2011

Поскольку Objective-C - это расширенный набор C, вы можете напрямую использовать этот код C в своем коде Objective-C.

...