2013-06-05 2 views
-3

Я кодирую адаптивный алгоритм хаффмана, и у меня есть проблема. Чтение байт файла JPG после байта i в конечном итоге влияет на это шестнадцатеричное значение 00. Которая моя программа читает как «0».hex значение от 00 до ascii или char

Проверьте изображение: http://shrani.si/f/u/Ub/3Yv2Q0LA/napaka.jpg

, как вы видите, первые два символа представлены со значением до полукокса. -значение «char».

В третьем случае только нулевой передается, но мой алгоритм ничего не делает с ним, так как он не представляет собой символ. Как я могу это исправить, мне нужно также сохранить эти значения в моем дереве, чтобы я мог сжать и в конечном итоге распаковать.

Приветствия

+1

'0' не печатаемый символ, что вы ожидаете? –

+0

И что вы хотите сделать с бинарным нолем? Это, кстати, равно нулю в каждой базе, ноль равен нулю. И нет «char» для представления двоичного нуля, не знаете, чего вы пытаетесь выполнить? –

+0

Я не вижу здесь никакого кода, чтобы помочь вам. Любой тип «чтения» может считывать двоичные данные в память. Эта память может быть прочитана как char, unsigned char, int, что угодно. Я считаю, что у вас может быть концептуальная проблема. –

ответ

2

char является номер (в большинстве систем это 8 битное число, но не все). То, что вы видите, - это IDE, отображающее числовое значение с одним эквивалентом символов ASCII. Не все символы относятся к печатаемому символу ASCII (см. here для получения дополнительной информации).

Если среда IDE считает, что нет пригодного для печати эквивалента, она просто не будет печатать одиночный эквивалент. Когда вы помещаете что-то в одинарные кавычки в свой код, вы говорите компилятору, чтобы заменить этот символ на числовой эквивалент ASCII. Таким образом, следующие условия эквивалентны:

#include<stdio.h> // C 
#include<cstdio> // C++ 
int main() 
{ 
    char x = 'A'; 
    char y = 65; 
    if (x == y) 
    { 
    printf("var x is the same as y. '%c' == '%c'\n", x, y); 
    } 
    else 
    { 
    printf("ERROR: var x is different then y. '%c' == '%c'\n", x, y); 
    } 
} 

Выход будет:

var x is the same as y. 'A' == 'A' 
+0

Я вижу, что вы хотите сказать мне. Но может ли помочь мне, как я могу хранить это в дереве, чтобы я мог прочитать его снова? Если u является familir с алгоритмом huffman, вы знаете, что он хранит каждый полученный charecter или каждый символ. Таким образом, 0 также является символом, который мне нужно написать, когда я его распакую. Как? – user2456783

+0

Huffman не сложно найти с поиском google. Я сам его кодировал несколько раз профессионально. Просто взгляни немного. –

+0

Он уже работает с обычными txt-файлами, где символы являются нормальными. Но с файлом jpg и шестнадцатеричным номером 00, я обречен. Мне просто нужно это исправить, тогда он должен работать – user2456783

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