十六进制值00到ascii或char

时间:2013-06-05 17:37:06

标签: c++ hex ascii

我编码自适应霍夫曼算法,我有一个问题。在字节i之后读取JPG文件字节最终会碰到这个十六进制值00.我的程序读取为' 0'。

查看图片:http://shrani.si/f/u/Ub/3Yv2Q0LA/napaka.jpg

如您所见,前两个字符在char之前用值表示。 -somenumber' char'。

在第三种情况下,只有零传递,但我的算法不会对它做任何事情,因为它不代表char。我怎么能解决这个问题,我需要将这些值存储到我的树中,这样我就可以压缩并最终解压缩。

干杯

1 个答案:

答案 0 :(得分: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'