Как показать содержимое NSData в битах? - PullRequest
3 голосов
/ 07 февраля 2012

У меня есть NSData, и мне нужно просматривать его содержимое в чистом виде. Пробовал NSLog [описание NSData], но возвращает NSString. Есть предложения?

Ответы [ 2 ]

7 голосов
/ 07 февраля 2012

используйте это для байтов

const char *byte = [data bytes];
NSLog(@"%s",byte);

это для битов

const char *byte = [data bytes];
unsigned int length = [data length];
for (int i=0; i<length; i++) {
    char n = byte[i];
    char buffer[9];
    buffer[8] = 0; //for null
    int j = 8;
    while(j > 0)
    {
        if(n & 0x01)
        {
            buffer[--j] = '1';
        } else
        {
            buffer[--j] = '0';
        }
        n >>= 1;
    }
    printf("%s ",buffer);
2 голосов
/ 07 февраля 2012

Вы можете посмотреть эти байты в окне браузера памяти:

void* bytes_memory = [yourData bytes];  // set breakpoint after this line

... после остановки на точке останова найдите bytes_memory в окне локальных переменных, щелкните по нему правой кнопкой мыши и выберите View memory of *bytes_memory.

Если вы хотите печатать в консольные биты (в формате 10011100), вам необходимо преобразовать данные в соответствующее строковое представление ( здесь - пример).

...