十六进制中的“\ 377 \ 377 \ 377 \ 377 \ 020 \ 020 \ 006”多少钱?

时间:2016-04-29 13:20:50

标签: c

十六进制中<!doctype html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <title>Test</title> <style type="text/css"> iframe { width: 935px; height: 1210px; overflow:hidden; } </style> </head> <body> <div style="overflow: auto; width: 100%; height: 100%;"> <iframe src="page1.svg"></iframe> <iframe src="page2.svg"></iframe> <iframe src="page3.svg"></iframe> <iframe src="page4.svg"></iframe> <iframe src="page5.svg"></iframe> <iframe src="page6.svg"></iframe> <iframe src="page7.svg"></iframe> <iframe src="page8.svg"></iframe> <iframe src="page9.svg"></iframe> <iframe src="page10.svg"></iframe> </div> </body> </html> 多少钱? "\377\377\377\377\020\020\006"在这里意味着什么?我知道"\"代表十六进制

2 个答案:

答案 0 :(得分:3)

这看起来像八进制的七个字节的序列,即base-8,表示法。在二进制中,它们看起来像这样(空格是为了清晰)

11111111 11111111 11111111 11111111 00010000 00010000 00000110

转换为HEX,这将是

      FF       FF       FF       FF       10       10       06

由于这是一个字符串文字,它的末尾有一个空终止符,因此它所代表的完整字节序列是FF FF FF FF 10 10 06 00

Octals很容易翻译成二进制文件,因为您需要记住的是下面的八元素表:

0 - 000
1 - 001
2 - 010
3 - 011
4 - 100
5 - 101
6 - 110
7 - 111

转换是用表中的三位序列对base-8中的数字进行机械替换。

答案 1 :(得分:3)

"\377\377\377\377\020\020\006"是一个包含八进制常量的字符串。 \是转义序列的开始,如果有一个有效的八进制数字,那么该数字加上后面的两个数字表示它由给定的八进制代码表示的下一个字节。

来自standard

的第6.4.4.4节
  

八进制转义序列:
   \ octal-digit
   \ octal-digit八进制数字
   \ octal-digit octal-digit octal-digit

     

...

     

八进制转义序列中反斜杠后面的八进制数字   被视为构建单个角色的一部分   对于整数字符常量或单个宽度   宽字符常量的字符。的数值   如此形成的八进制整数指定所需字符的值   或广泛的性格。

采取八进制:

377 377 377 377 020 020 006

将其转换为二进制文件:

11 111 111  11 111 111  11 111 111  11 111 111  00 010 000  00 010 000  00 000 110
 1111 1111   1111 1111   1111 1111   1111 1111   0001 0000   0001 0000   0000 0110

给我们以下十六进制:

FF FF FF FF 10 10 06

所以你也可以用十六进制转义序列定义上面的字符串:

"\xFF\xFF\xFF\xFF\x10\x10\x06"

另请注意,因为这是一个字符串常量,所以最后还有一个空字节,因此总共有8个字节。