﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-come on！share your idea</title><link>http://www.cppblog.com/xiaoyu0720/</link><description>你有一份快乐，我有一份快乐，分享一下，我们每个人都多了一份快乐。</description><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 07:06:27 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 07:06:27 GMT</pubDate><ttl>60</ttl><item><title>Diameter消息解析工具</title><link>http://www.cppblog.com/xiaoyu0720/archive/2014/07/07/207557.html</link><dc:creator>编码者-thinker</dc:creator><author>编码者-thinker</author><pubDate>Mon, 07 Jul 2014 09:26:00 GMT</pubDate><guid>http://www.cppblog.com/xiaoyu0720/archive/2014/07/07/207557.html</guid><wfw:comment>http://www.cppblog.com/xiaoyu0720/comments/207557.html</wfw:comment><comments>http://www.cppblog.com/xiaoyu0720/archive/2014/07/07/207557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xiaoyu0720/comments/commentRss/207557.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xiaoyu0720/services/trackbacks/207557.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;#ifndef&nbsp;PUBLIC_H_INCLUDED<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;PUBLIC_H_INCLUDED<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;#include&nbsp;&lt;stdio.h&gt;<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;#include&nbsp;&lt;<span style="color: #0000FF; ">string</span>.h&gt;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;#ifdef&nbsp;_DEBUG_<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;<br /><span style="color: #008080; ">10</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;debug(<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;__VA_ARGS__)<br /><span style="color: #008080; ">11</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;ASSERT(x&nbsp;,&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />)&nbsp;do&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;!(&nbsp;x&nbsp;)&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"LINE:%d,FUNC:%s&nbsp;,TIME:%s\n"\<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;__LINE__,&nbsp;__func__,&nbsp;__TIME__);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(&nbsp;stderr,&nbsp;__VA_ARGS__);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(&nbsp;1&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\<br /><span style="color: #008080; ">19</span>&nbsp;}&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(&nbsp;0&nbsp;)<br /><span style="color: #008080; ">20</span>&nbsp;<span style="color: #0000FF; ">#else</span><br /><span style="color: #008080; ">21</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;debug(<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />)<br /><span style="color: #008080; ">22</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;ASSERT(x&nbsp;,&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />)<br /><span style="color: #008080; ">23</span>&nbsp;<span style="color: #0000FF; ">#endif</span><br /><span style="color: #008080; ">24</span>&nbsp;<br /><span style="color: #008080; ">25</span>&nbsp;<br /><span style="color: #008080; ">26</span>&nbsp;<br /><span style="color: #008080; ">27</span>&nbsp;<br /><span style="color: #008080; ">28</span>&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;ascii_char_maps[&nbsp;256&nbsp;]&nbsp;;<br /><span style="color: #008080; ">29</span>&nbsp;<br /><span style="color: #008080; ">30</span>&nbsp;<br /><span style="color: #008080; ">31</span>&nbsp;<br /><span style="color: #008080; ">32</span>&nbsp;<span style="color: #0000FF; ">#endif</span>&nbsp;<br /><span style="color: #008080; ">33</span>&nbsp;</div>#include&nbsp;"public.h"<br /><br /><span style="color: #0000FF; ">void</span>&nbsp;init_ascii_char_maps()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(&nbsp;ascii_char_maps&nbsp;,&nbsp;-1,&nbsp;<span style="color: #0000FF; ">sizeof</span>&nbsp;ascii_char_maps);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(&nbsp;i&nbsp;=&nbsp;'a'&nbsp;;&nbsp;i&nbsp;&lt;&nbsp;'g'&nbsp;;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascii_char_maps[&nbsp;i&nbsp;]&nbsp;=&nbsp;i&nbsp;-&nbsp;'a'&nbsp;+&nbsp;0x0a;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(&nbsp;i&nbsp;=&nbsp;'A'&nbsp;;&nbsp;i&nbsp;&lt;&nbsp;'G'&nbsp;;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascii_char_maps[&nbsp;i&nbsp;]&nbsp;=&nbsp;i&nbsp;-&nbsp;'A'&nbsp;+&nbsp;0x0a;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(&nbsp;i&nbsp;=&nbsp;'0'&nbsp;;&nbsp;i&nbsp;&lt;=&nbsp;'9'&nbsp;;&nbsp;i++&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ascii_char_maps[&nbsp;i&nbsp;]&nbsp;=&nbsp;i&nbsp;-&nbsp;'0'&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /><br /><span style="color: #008000; ">/*</span><span style="color: #008000; ">*<br />*&nbsp;&nbsp;"A0"&nbsp;==&gt;&nbsp;0xA0<br />*&nbsp;&nbsp;两个字节数据&nbsp;--&gt;&nbsp;一个字节数值<br /></span><span style="color: #008000; ">*/</span><br /><br /><span style="color: #0000FF; ">int</span>&nbsp;&nbsp;__HexStrToHexInt(&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*szSrc&nbsp;,&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*chDst&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;tmp_val;<br />&nbsp;&nbsp;&nbsp;&nbsp;*chDst&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;tmp_val&nbsp;=&nbsp;ascii_char_maps&nbsp;[&nbsp;szSrc[0]&nbsp;]&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(&nbsp;tmp_val&nbsp;!=&nbsp;-1&nbsp;,&nbsp;"unknown&nbsp;character&nbsp;value[%x]\n"&nbsp;,&nbsp;szSrc[0]);<br />&nbsp;&nbsp;&nbsp;&nbsp;*chDst&nbsp;=&nbsp;(tmp_val&nbsp;&lt;&lt;&nbsp;4);<br />&nbsp;&nbsp;&nbsp;&nbsp;tmp_val&nbsp;=&nbsp;ascii_char_maps&nbsp;[&nbsp;szSrc[1]&nbsp;]&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(&nbsp;tmp_val&nbsp;!=&nbsp;-1&nbsp;,&nbsp;"unknown&nbsp;character&nbsp;value[%x]\n"&nbsp;,&nbsp;szSrc[1]);<br />&nbsp;&nbsp;&nbsp;&nbsp;*chDst&nbsp;+=&nbsp;tmp_val;<br />&nbsp;&nbsp;&nbsp;&nbsp;debug("[%c,%c]==&gt;[%02X]\n",szSrc[0],szSrc[1],&nbsp;*chDst);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />}<br /><br /><span style="color: #008000; ">/*</span><span style="color: #008000; ">*<br />*&nbsp;&nbsp;"A0B0C0"&nbsp;==&gt;&nbsp;0xA0B0C0<br />*&nbsp;&nbsp;2n个字节数据&nbsp;--&gt;&nbsp;n个字节数值(n&nbsp;&gt;=&nbsp;0)<br /></span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">int</span>&nbsp;&nbsp;HexStrToHexInt(&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*szSrc&nbsp;,&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*chDst&nbsp;,&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;*length&nbsp;)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i,j,ret&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;src_len&nbsp;=&nbsp;strlen(szSrc);<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*pSrc;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*pDst;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;src_len&nbsp;%&nbsp;2&nbsp;!=&nbsp;0&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(&nbsp;stderr,&nbsp;"szSrc&nbsp;length[%d]&nbsp;error!&nbsp;\n",&nbsp;src_len);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;src_len&nbsp;==&nbsp;0&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chDst[0]&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*length&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(&nbsp;pSrc&nbsp;=&nbsp;szSrc,&nbsp;pDst&nbsp;=&nbsp;chDst&nbsp;;&nbsp;(pSrc&nbsp;-&nbsp;szSrc)&nbsp;&lt;&nbsp;src_len&nbsp;;&nbsp;pSrc&nbsp;&nbsp;+=&nbsp;2,&nbsp;pDst++&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;__HexStrToHexInt(&nbsp;pSrc&nbsp;,&nbsp;pDst&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(&nbsp;ret&nbsp;&lt;&nbsp;0&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(&nbsp;stderr,&nbsp;"__HexStrToHexInt&nbsp;return&nbsp;[%d]&nbsp;error\n",&nbsp;ret&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;-2;<span style="color: #008000; ">/*</span><span style="color: #008000; ">内部字符串格式错误，存在非法字符</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;*length&nbsp;=&nbsp;src_len/2;<br />&nbsp;&nbsp;&nbsp;&nbsp;chDst[*length]&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />}</div><span style="color: #008080; "><br />&nbsp;1</span>&nbsp;#include&nbsp;"public.h"<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<img id="Code_Closed_Image_172458" onclick="this.style.display='none'; Code_Closed_Text_172458.style.display='none'; Code_Open_Image_172458.style.display='inline'; Code_Open_Text_172458.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" style="display: none;"><span id="Code_Closed_Text_172458" style="border: 1px solid #808080; background-color: #ffffff; display: none;">public.h</span><br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">the&nbsp;attribute&nbsp;struct&nbsp;of&nbsp;message&nbsp;head</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;typedef&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;_dcca_msg_head_cmd_t<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;{<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;&nbsp;&nbsp;&nbsp;:1;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;Request&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;:1;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;Proxiable&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;e&nbsp;&nbsp;&nbsp;&nbsp;:1;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;Error&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;&nbsp;&nbsp;&nbsp;:1;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;Potentially&nbsp;re-transmitted&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;rsvd&nbsp;:4;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;Reserved&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;uiCmdCode:24;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">Command-Code&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">12</span>&nbsp;}&nbsp;DCCA_MSG_CMD_T;<br /><span style="color: #008080; ">13</span>&nbsp;<br /><span style="color: #008080; ">14</span>&nbsp;<br /><span style="color: #008080; ">15</span>&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">the&nbsp;struct&nbsp;of&nbsp;message&nbsp;head</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">16</span>&nbsp;<br /><span style="color: #008080; ">17</span>&nbsp;typedef&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;&nbsp;_dcca_msg_head_t{<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;&nbsp;&nbsp;ucVer;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">Version</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;uiLen:24;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">Message&nbsp;Length</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCCA_MSG_CMD_T&nbsp;&nbsp;command;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">command&nbsp;flags&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;uiAppID;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">Application-ID</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;uiHbh;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">Hop-by-Hop&nbsp;Identifier</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;uiEte;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">End-to-End&nbsp;Identifier</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">24</span>&nbsp;}&nbsp;DCCA_MSG_HEAD_T&nbsp;;<br /><span style="color: #008080; ">25</span>&nbsp;<br /><span style="color: #008080; ">26</span>&nbsp;<br /><span style="color: #008080; ">27</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;&nbsp;display_msg_head(&nbsp;&nbsp;DCCA_MSG_HEAD_T&nbsp;*p_msg_head&nbsp;)<br /><span style="color: #008080; ">28</span>&nbsp;{<br /><span style="color: #008080; ">29</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCCA_MSG_HEAD_T&nbsp;*p;<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;=&nbsp;p_msg_head;<br /><span style="color: #008080; ">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,&nbsp;"ver:%d,msg_len:%x\nflag{r:%d,p:%d,e:%d,t:%d,rsvd:%d},command_code:%d\n",<br /><span style="color: #008080; ">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p-&gt;ucVer,p-&gt;uiLen,p-&gt;command.r,p-&gt;command.p,p-&gt;command.e,&nbsp;p-&gt;command.t,&nbsp;p-&gt;command.rsvd,&nbsp;p-&gt;command.uiCmdCode);<br /><span style="color: #008080; ">33</span>&nbsp;}<br /><span style="color: #008080; ">34</span>&nbsp;<br /><span style="color: #008080; ">35</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;DCCA_MSG_HEAD_LEN&nbsp;&nbsp;sizeof(&nbsp;DCCA_MSG_HEAD_T&nbsp;)<br /><span style="color: #008080; ">36</span>&nbsp;<br /><span style="color: #008080; ">37</span>&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">the&nbsp;attribute&nbsp;struct&nbsp;of&nbsp;message&nbsp;head</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">38</span>&nbsp;typedef&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;_dcca_avp_node_flag_t<br /><span style="color: #008080; ">39</span>&nbsp;{<br /><span style="color: #008080; ">40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;&nbsp;&nbsp;&nbsp;:1;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;Vender-ID&nbsp;flag&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;:1;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;Must&nbsp;指明对该AVP的支持是否是必需的&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;&nbsp;&nbsp;&nbsp;:1;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;指明为保证端到端安全需要加密&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;rsvd&nbsp;:5;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">*&lt;&nbsp;Reserved&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">44</span>&nbsp;}&nbsp;DCCA_AVP_FLAG_T;<br /><span style="color: #008080; ">45</span>&nbsp;<br /><span style="color: #008080; ">46</span>&nbsp;<br /><span style="color: #008080; ">47</span>&nbsp;<br /><span style="color: #008080; ">48</span>&nbsp;typedef&nbsp;<span style="color: #0000FF; ">struct</span>&nbsp;&nbsp;_dcca_avp_node_head_t&nbsp;{<br /><span style="color: #008080; ">49</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;avp_code;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">AVP&nbsp;Code</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">50</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCCA_AVP_FLAG_T&nbsp;flag&nbsp;;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">V&nbsp;M&nbsp;P&nbsp;r&nbsp;r&nbsp;r&nbsp;r&nbsp;r</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">51</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;avp_length;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">AVP&nbsp;Length</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">52</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;&nbsp;&nbsp;&nbsp;verdor_id;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/*</span><span style="color: #008000; ">制造商ID</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">53</span>&nbsp;}&nbsp;DCCA_AVP_CODE_HEAD_T;<br /><span style="color: #008080; ">54</span>&nbsp;<br /><span style="color: #008080; ">55</span>&nbsp;<span style="color: #0000FF; ">#define</span>&nbsp;DCCA_AVP_CODE_HEAD_LEN&nbsp;&nbsp;sizeof(&nbsp;DCCA_AVP_CODE_HEAD_T&nbsp;)<br /><span style="color: #008080; ">56</span>&nbsp;<br /><span style="color: #008080; ">57</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;main(&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;argc&nbsp;,<span style="color: #0000FF; ">char</span>&nbsp;*argv[]&nbsp;)<br /><span style="color: #008080; ">58</span>&nbsp;{<br /><span style="color: #008080; ">59</span>&nbsp;<br /><span style="color: #008080; ">60</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;i,len;<br /><span style="color: #008080; ">61</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">62</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;*szSrc&nbsp;=&nbsp;"0100035CC000011000000004080004C5F280C82B000001074000003443434747534E3031424857312E636D63632E636F6D3B333631323539303636323B32323635363B3239393137000001024000000C00000004000001084000001D43434747534E3031424857312E636D63632E636F6D0000000000012840000010636D63632E636F6D0000011B40000010636D63632E636F6D00000125400000166A696C696E2E636D63632E636F6D0000000001A04000000C000000020000019F4000000C00000003000001CD400000156770727340636D63632E636F6D000000000001164000000CD63F4A6E000000374000000CD753C9CA000001BB4000002C000001C24000000C00000000000001BC4000001538363133373034343439353836000000000001BB4000002C000001C24000000C00000001000001BC4000001734363030303434323830393536313200000001C74000000C00000001000001C840000064000001B540000008000001BE40000038000001A54000001000000000000001880000019C4000001000000000000000D00000019E4000001000000000000000B8000001B04000000C7735940900000368C0000010000028AF00000004000001CA00000024000001CB0000000C00000000000001CC00000010686992005292918700000369C000017C000028AF0000036AC0000170000028AF00000002C0000010000028AF17346C9B00000003C0000010000028AF00000000000004CBC0000012000028AF00010AE4D18A000000000005C0000027000028AF30352D32333932316639313936393739373734666239373937303000000004CCC0000012000028AF0001DDB1CC0D00000000034FC0000012000028AF0001DDB1CC3100000000034EC0000012000028AF0001C0A82090000000000008C0000011000028AF343630303000000000000009C0000011000028AF34363030300000000000000AC000000D000028AF350000000000001E4000000D636D6E65740000000000000CC000000D000028AF300000000000000DC0000010000028AF3034303000000012C0000011000028AF343630303000000000000017C000000E000028AF23000000000003ECC000001A000028AF755F705F636D63635F636D6E6574000000000016C0000014000028AF0064F00043E780F300000015C000000D000028AF02000000";<br /><span style="color: #008080; ">63</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">64</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">char</span>&nbsp;szDst[&nbsp;4096&nbsp;];<br /><span style="color: #008080; ">65</span>&nbsp;<br /><span style="color: #008080; ">66</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCCA_MSG_HEAD_T&nbsp;dcca_msg_head;<br /><span style="color: #008080; ">67</span>&nbsp;<br /><span style="color: #008080; ">68</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_ascii_char_maps();<br /><span style="color: #008080; ">69</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(&nbsp;&amp;dcca_msg_head,&nbsp;0,&nbsp;<span style="color: #0000FF; ">sizeof</span>&nbsp;(&nbsp;DCCA_MSG_HEAD_T&nbsp;));<br /><span style="color: #008080; ">70</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;=&nbsp;0;<br /><span style="color: #008080; ">71</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(&nbsp;szDst,&nbsp;0,&nbsp;<span style="color: #0000FF; ">sizeof</span>(&nbsp;szDst&nbsp;)&nbsp;);<br /><span style="color: #008080; ">72</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;*fp&nbsp;=&nbsp;fopen(&nbsp;"./a.txt"&nbsp;,&nbsp;"wb+");<br /><span style="color: #008080; ">73</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>(&nbsp;i&nbsp;=&nbsp;0&nbsp;;i&nbsp;&lt;&nbsp;2;&nbsp;i++)<br /><span style="color: #008080; ">74</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><span style="color: #008080; ">75</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HexStrToHexInt(szSrc,&nbsp;szDst,&amp;len);<br /><span style="color: #008080; ">76</span>&nbsp;<span style="color: #008000; ">/**/</span><br /><span style="color: #008080; ">77</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite(&nbsp;szDst,&nbsp;len&nbsp;,&nbsp;1&nbsp;,fp&nbsp;);<br /><span style="color: #008080; ">78</span>&nbsp;<span style="color: #008000; ">/**/</span><br /><span style="color: #008080; ">79</span>&nbsp;<br /><span style="color: #008080; ">80</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memcpy(&nbsp;&amp;dcca_msg_head,&nbsp;szDst,&nbsp;DCCA_MSG_HEAD_LEN&nbsp;);<br /><span style="color: #008080; ">81</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display_msg_head(&nbsp;&amp;dcca_msg_head&nbsp;);<br /><span style="color: #008080; ">82</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">83</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose(fp);<br /><span style="color: #008080; ">84</span>&nbsp;<br /><span style="color: #008080; ">85</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br /><span style="color: #008080; ">86</span>&nbsp;}<br /><span style="color: #008080; ">87</span>&nbsp;</div><img src ="http://www.cppblog.com/xiaoyu0720/aggbug/207557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xiaoyu0720/" target="_blank">编码者-thinker</a> 2014-07-07 17:26 <a href="http://www.cppblog.com/xiaoyu0720/archive/2014/07/07/207557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>三星GT-I9003系统刷机时报错“E:Unable to write to ums lunfile”--问题还在解决中</title><link>http://www.cppblog.com/xiaoyu0720/archive/2013/05/14/200267.html</link><dc:creator>编码者-thinker</dc:creator><author>编码者-thinker</author><pubDate>Tue, 14 May 2013 14:28:00 GMT</pubDate><guid>http://www.cppblog.com/xiaoyu0720/archive/2013/05/14/200267.html</guid><wfw:comment>http://www.cppblog.com/xiaoyu0720/comments/200267.html</wfw:comment><comments>http://www.cppblog.com/xiaoyu0720/archive/2013/05/14/200267.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/xiaoyu0720/comments/commentRss/200267.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xiaoyu0720/services/trackbacks/200267.html</trackback:ping><description><![CDATA[<h1>Question：</h1><div></div><div>手机型号：三星GT-I9003</div><div>问题描述：最初问题为系统无限重启但都只停留在SAMSUNG界面后就重启了；</div><div>后续操作：</div><div>&nbsp; &nbsp; 首先我用&#8220;dxkp9美化rom&#8221; 重新刷了一下系统，结果并没有解决，于是进入了recovery模式，执行了"Wipe data/factory reset"后提示的错误信息为</div><div>"</div><div>Formatting /datadata...</div><div>Done.</div><div>Formatting /sd-ext...</div><div>Done.</div><div>Error mounting /sdcard!</div><div>Error mounting /data!</div><div>Error mounting /sdcard!</div><div>E:Unable to write to ums lunfile (No such file or directory)</div><div>--Wiping data...</div><div>Formatting /data...</div><div>Error mounting /data!</div><div>Skippping format...</div><div>Formatting /cache...</div><div>Fromatting /datadata...</div><div>Formatting /sd-ext...</div><div>Formatting /sdcard/.android_secure...</div><div>Error mounting /sdcard/.android_secure!</div><div>Skipping format...</div><div>Data wipe complete.</div><div>"</div><div></div><div></div><div>&nbsp; &nbsp; 根据提示，可能需要重新加载一下分区，于是我进入了"Mounts and Storage Menu"菜单中，显示的信息如下:</div><div>"</div><div>- unmount /cache</div><div>- mount /data</div><div>- unmount /system</div><div>- mount /datadata</div><div>- mount /sdcard</div><div>- mount /sd-ext</div><div>- format /cache</div><div>- format /data</div><div>- format /system</div><div>- format /datadata</div><div>- format /sdcard</div><div>- format /sd-ext</div><div>- mount USB storage</div><div>"</div><div>然后我按照顺序手工加载了 /sd-ext 和 /datadata 是成功的，但是在执行"mount /sdcard"后就提示"Error mounting /sdcard!",执行"mount /data"也是同样的报错"Error mounting /data!"</div><div></div><div>Format_volume: rfs format failed on /dev/block/mmcblk0p3</div><div>Formatting /dbdata...</div><div>Formatting /cache...</div><div>Data wipe failed.</div><div></div><div></div><div><h1>Solving：</h1>（获得了root权限和adb工具之后，问题似乎没有那么难解决了，尝试中）</div><div></div><h2>操作记录</h2><div>1. 刷DXKP9美化rom&nbsp;</div><div>2. 进入recovery 模式，然后连接数据线，进入adb shell模式；</div><div>&nbsp; &nbsp; 输入命令 whoami(显示为我是root用户了),</div><div></div><div></div><div>执行</div><div>fdisk -l /dev/block/mmcblk0</div><div>输出结果如下：</div><div>Disk /dev/block/mmcblk0: 7822 MB, 7822376960 bytes</div><div>5 heads, 13 sectors/track, 235047 cylinders</div><div>Units = cylinders of 65 * 512 = 33280 bytes</div><div></div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Device Boot &nbsp; &nbsp; &nbsp;Start &nbsp; &nbsp; &nbsp; &nbsp; End &nbsp; &nbsp; &nbsp;Blocks &nbsp;Id System</div><div>/dev/block/mmcblk0p1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 127 &nbsp; &nbsp; &nbsp;235048 &nbsp; &nbsp; 7634944 &nbsp; b Win95 FAT32</div><div></div><div>显示磁盘大小为8G(这个是我External sdcard),也就是说显示的直接就是我的外部SD卡了，那么按照原理来说，我只需要重新对我的外置SD卡进行分区，然后mount到 /sdcard就可以了(希望理解是正确的),</div><div></div><div>--------------<br />没搞过安卓这些东西，得考虑下再动手了。不能让手机真的成了"砖头"，而且关于刷机失败种类以及是否有补救方法等相关的介绍文档相当少，收集整理整理，以后会有帮助的。</div><div></div><img src ="http://www.cppblog.com/xiaoyu0720/aggbug/200267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xiaoyu0720/" target="_blank">编码者-thinker</a> 2013-05-14 22:28 <a href="http://www.cppblog.com/xiaoyu0720/archive/2013/05/14/200267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]VC无闪烁刷屏技术的实现</title><link>http://www.cppblog.com/xiaoyu0720/archive/2011/11/05/159661.html</link><dc:creator>编码者-thinker</dc:creator><author>编码者-thinker</author><pubDate>Sat, 05 Nov 2011 04:00:00 GMT</pubDate><guid>http://www.cppblog.com/xiaoyu0720/archive/2011/11/05/159661.html</guid><wfw:comment>http://www.cppblog.com/xiaoyu0720/comments/159661.html</wfw:comment><comments>http://www.cppblog.com/xiaoyu0720/archive/2011/11/05/159661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xiaoyu0720/comments/commentRss/159661.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xiaoyu0720/services/trackbacks/159661.html</trackback:ping><description><![CDATA[<div><h1><span style="font-family: 'Times New Roman'; font-size: 12pt; ">VC<span style="font-family: 宋体; ">无闪烁刷屏技术的实现</span></span></h1><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><div><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; font-weight: bold; ">1<span style="font-family: 宋体; ">显示的图形为什么会闪烁</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　我们的绘图过程大多放在OnDraw或者OnPaint函数中，OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时，总是先用背景色将显示区清除，然后才调用OnPaint，而背景色往往与绘图内容反差很大，这样在短时间内背景色与显示图形的交替出现，使得显示窗口看起来在闪。如果将背景刷设置成NULL，这样无论怎样重绘图形都不会闪了。当然，这样做会使得窗口的显示乱成一团，因为重绘时没有背景色对原来绘制的图形进行清除，而又叠加上了新的图形。有的人会说，闪烁是因为绘图的速度太慢或者显示的图形太复杂造成的，其实这样说并不对，绘图的显示速度对闪烁的影响不是根本性的。例如在OnDraw(CDC&nbsp;*pDC)中这样写：</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">pDC-&gt;MoveTo(0,0);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">pDC-&gt;LineTo(100,100);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　这个绘图过程应该是非常简单、非常快了吧，但是拉动窗口变化时还是会看见闪烁。其实从道理上讲，画图的过程越复杂越慢闪烁应该越少，因为绘图用的时间与用背景清除屏幕所花的时间的比例越大人对闪烁的感觉会越不明显。比如：清楚屏幕时间为1s绘图时间也是为1s，这样在10s内的连续重画中就要闪烁5次；如果清楚屏幕时间为1s不变，而绘图时间为9s，这样10s内的连续重画只会闪烁一次。这个也可以试验，在OnDraw(CDC&nbsp;*pDC)中这样写：</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">for(int&nbsp;i=0;i&lt;100000;i++)</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">{</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">pDC-&gt;MoveTo(0,i);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">pDC-&gt;LineTo(1000,i);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">}</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　程序有点极端，但是能说明问题。</span></span></p><p style="text-align: justify; margin-top: 5pt; text-indent: 21pt; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">说到这里可能又有人要说了，为什么一个简单图形看起来没有复杂图形那么闪呢？这是因为复杂图形占的面积大，重画时造成的反差比较大，所以感觉上要闪得厉害一些，但是闪烁频率要低。那为什么动画的重画频率高，而看起来却不闪？</span></span><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">这里，</span></span><span style="font-family: 'Times New Roman'; color: #ff6600; font-size: 10.5pt; "><span style="font-family: 宋体; ">我就要再次强调了，闪烁是什么？闪烁就是反差，反差越大，闪烁越厉害</span></span><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">。</span></span><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">因为动画的连续两个帧之间的差异很小所以看起来不闪。如果不信，可以在动画的每一帧中间加一张纯白的帧，不闪才怪呢。</span></span></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; margin-top: 5pt; "></p><p style="text-align: justify; margin-top: 5pt; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; font-weight: bold; ">2<span style="font-family: 宋体; ">、如何避免闪烁</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　在知道图形显示闪烁的原因之后，对症下药就好办了。首先当然是去掉MFC提供的背景绘制过程了。实现的方法很多:</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　*&nbsp;可以在窗口形成时给窗口的注册类的背景刷付NULL</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　*&nbsp;也可以在形成以后修改背景</span></span></p><p style="text-align: justify; "></p><p style="text-align: justify; margin-top: 5pt; margin-bottom: 5pt; "><span style="font-family: 'Times New Roman'; color: #ff6600; font-size: 10.5pt; ">static&nbsp;CBrush&nbsp;brush(#ff0000);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; color: #ff6600; font-size: 10.5pt; ">SetClassLong(this-&gt;m_hWnd,GCL_HBRBACKGROUND,(LONG)(HBRUSH)brush);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　*&nbsp;要简单也可以重载OnEraseBkgnd(CDC*&nbsp;pDC)直接返回TRUE</span></span></p><p style="text-align: justify; margin-top: 5pt; margin-bottom: 5pt; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　这样背景没有了，结果图形显示的确不闪了，但是显示也象前面所说的一样，变得一团乱。怎么办？</span></span><span style="font-family: 'Times New Roman'; color: #ff6600; font-size: 10.5pt; "><span style="font-family: 宋体; ">这就要用到双缓存的方法了。</span></span><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">双缓冲就是除了在屏幕上有图形进行显示以外，在内存中也有图形在绘制。</span></span><span style="font-family: 'Times New Roman'; color: #ff6600; font-size: 10.5pt; "><span style="font-family: 宋体; ">我们可以把要显示的图形先在内存中绘制好，然后再一次性的将内存中的图形按照一个点一个点地覆盖到屏幕上去</span></span><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">（</span></span><span style="font-family: 'Times New Roman'; color: #ff6600; font-size: 10.5pt; "><span style="font-family: 宋体; ">这个过程非常快，因为是非常规整的内存拷贝</span></span><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">）。这样在内存中绘图时，随便用什么反差大的背景色进行清除都不会闪，因为看不见。当贴到屏幕上时，因为内存中最终的图形与屏幕显示图形差别很小（如果没有运动，当然就没有差别），这样看起来就不会闪。</span></span></p><p style="text-align: justify; margin-top: 5pt; margin-bottom: 5pt; "></p><p style="text-align: justify; margin-top: 5pt; margin-bottom: 5pt; "></p><p style="text-align: justify; margin-top: 5pt; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; font-weight: bold; ">3<span style="font-family: 宋体; ">、如何实现双缓冲</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　首先给出实现的程序，然后再解释，同样是在OnDraw(CDC&nbsp;*pDC)中：</span></span></p><p style="text-align: justify; "></p><p style="text-align: justify; margin-top: 5pt; margin-bottom: 5pt; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CDC&nbsp;MemDC;&nbsp;//<span style="font-family: 宋体; ">首先定义一个显示设备对象</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CBitmap&nbsp;MemBitmap;//<span style="font-family: 宋体; ">定义一个位图对象</span></span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">随后建立与屏幕显示兼容的内存显示设备</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemDC.CreateCompatibleDC(NULL);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">这时还不能绘图，因为没有地方画</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">下面建立一个与屏幕显示兼容的位图，至于位图的大小嘛，可以用窗口的大小</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">将位图选入到内存显示设备中</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">只有选入了位图的内存显示设备才有地方绘图，画到指定的位图上</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CBitmap&nbsp;*pOldBit=MemDC.SelectObject(&amp;MemBitmap);</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">先用背景色将位图清除干净，这里我用的是白色作为背景</span></span></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">你也可以用自己应该用的颜色</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemDC.FillSolidRect(0,0,nWidth,nHeight,#ffffff);</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">绘图</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemDC.MoveTo(&#8230;&#8230;);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemDC.LineTo(&#8230;&#8230;);</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">将内存中的图拷贝到屏幕上进行显示</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">pDC-&gt;BitBlt(0,0,nWidth,nHeight,&amp;MemDC,0,0,SRCCOPY);</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//<span style="font-family: 宋体; ">绘图完成后的清理</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemBitmap.DeleteObject();</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemDC.DeleteDC();</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">请参阅注释。</span></span></p><p style="text-align: justify; "></p><p style="text-align: justify; margin-top: 5pt; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; font-weight: bold; ">4<span style="font-family: 宋体; ">、如何提高绘图的效率</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　实际上，在OnDraw(CDC&nbsp;*pDC)中绘制的图并不是所有都显示了的，例如：你在OnDraw中画了两个矩形，在一次重绘中虽然两个矩形的绘制函数都有执行，但是很有可能只有一个显示了，这是因为MFC本身为了提高重绘的效率设置了裁剪区。裁剪区的作用就是：只有在这个区内的绘图过程才会真正有效，在区外的是无效的，即使在区外执行了绘图函数也是不会显示的。因为多数情况下窗口重绘的产生大多是因为窗口部分被遮挡或者窗口有滚动发生，改变的区域并不是整个图形而只有一小部分，这一部分需要改变的就是pDC中的裁剪区了。因为显示（往内存或者显存都叫显示）比绘图过程的计算要费时得多，有了裁剪区后显示的就只是应该显示的部分，大大提高了显示效率。但是这个裁剪区是MFC设置的，它已经为我们提高了显示效率，在进行复杂图形的绘制时如何进一步提高效率呢？那就只有去掉在裁剪区外的绘图过程了。可以先用pDC-&gt;GetClipBox()得到裁剪区，然后在绘图时判断你的图形是否在这个区内，如果在就画，不在就不画。</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　如果你的绘图过程不复杂，这样做可能对你的绘图效率不会有提高。</span></span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　具体程序大家可看以下源代码：&nbsp;</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; font-weight: bold; ">5<span style="font-family: 宋体; ">、无闪烁背景图的绘制代码实现</span></span>&nbsp;</p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">///////////////&nbsp;<span style="font-family: 宋体; ">无闪烁背景图绘制&nbsp;//////////</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">////&nbsp;<span style="font-family: 宋体; ">程序设计:&nbsp;icemen&nbsp;(温冰)&nbsp;树爱兵</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//////////////////////////////////////////////</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">BOOL&nbsp;CStrucView::OnEraseBkgnd(CDC*&nbsp;pDC)&nbsp;</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">{&nbsp;int&nbsp;nWidth;</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">int&nbsp;nHeight;</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">//CView::OnEraseBkgnd(pDC);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CStrucDoc*&nbsp;pDoc&nbsp;=&nbsp;GetDocument();</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">ASSERT_VALID(pDoc);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CRect&nbsp;rect;</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">GetWindowRect(&amp;rect);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">nWidth&nbsp;=&nbsp;rect.Width();</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">nHeight=&nbsp;rect.Height();</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CDC&nbsp;MemDC;</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CBitmap&nbsp;MemBitmap;</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemDC.CreateCompatibleDC&nbsp;(NULL);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CBitmap&nbsp;*pOldBit=MemDC.SelectObject(&amp;MemBitmap);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemDC.FillSolidRect(0,0,nWidth,nHeight,#ffffff);</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">///////////////////////////////////////////////////////</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">////&nbsp;<span style="font-family: 宋体; ">以上为画背景色&nbsp;//////////////</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">////&nbsp;<span style="font-family: 宋体; ">以下为画背景图&nbsp;//////////////</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">///////////////////////////////////////////////////////&nbsp;</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">GetClientRect(rect);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">BITMAP&nbsp;bm;</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CDC&nbsp;dcMem;</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">VERIFY(m_bmp.GetObject(sizeof(bm),(LPVOID)&amp;bm));</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">dcMem.CreateCompatibleDC(pDC);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CBitmap&nbsp;*pOldBMP&nbsp;=(&nbsp;CBitmap&nbsp;*)dcMem.SelectObject(&amp;m_bmp);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemDC.BitBlt(&nbsp;(rect.right&nbsp;-&nbsp;bm.bmWidth)/2,</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">(rect.bottom&nbsp;-&nbsp;bm.bmHeight)/2,</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">bm.bmWidth,bm.bmHeight,&amp;dcMem,0,0,SRCCOPY);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">dcMem.SelectObject(pOldBMP);</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">///////////////////////////////////////////////////////</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">////&nbsp;<span style="font-family: 宋体; ">以上为画背景图&nbsp;//////////////</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">///////////////////////////////////////////////////////</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">pDC-&gt;BitBlt(0,0,nWidth,nHeight,&amp;MemDC,0,0,SRCCOPY);</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemBitmap.DeleteObject();</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">MemDC.DeleteDC();</span></p><p style="text-align: justify; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">return&nbsp;TRUE;</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">}</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">///////////////&nbsp;<span style="font-family: 宋体; ">无闪烁背景图绘制&nbsp;//////////</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">/////////////////////////////////////////////</span></p><p style="text-align: justify; "></p><p style="text-align: justify; margin-top: 5pt; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">注:程序中m_bmp&nbsp;为相应&nbsp;的&nbsp;StrucView.h中定义,为位图资源类</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">protected:</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CBitmap&nbsp;m_bmp;</span></p><p style="text-align: justify; margin-top: 5pt; margin-bottom: 5pt; "></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; "><span style="font-family: 宋体; ">　　并应加上下面段,当然,你可在任何时候加入loadBitmap&nbsp;子例程,也可加入文件资源,那由得你了!</span></span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">CStrucView::CStrucView()</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">{</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">VERIFY(m_bmp.LoadBitmap(IDB_BITMAP3));</span></p><p style="text-align: justify; "><span style="font-family: 'Times New Roman'; font-size: 10.5pt; ">}<br /></span><div>转载：<a href="http://www.pconline.com.cn/pcedu/empolder/gj/vc/0507/653941.html">http://www.pconline.com.cn/pcedu/empolder/gj/vc/0507/653941.html</a></div></p></div></div></div><img src ="http://www.cppblog.com/xiaoyu0720/aggbug/159661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xiaoyu0720/" target="_blank">编码者-thinker</a> 2011-11-05 12:00 <a href="http://www.cppblog.com/xiaoyu0720/archive/2011/11/05/159661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>排序算法之插入排序的通用算法</title><link>http://www.cppblog.com/xiaoyu0720/archive/2010/12/13/136337.html</link><dc:creator>编码者-thinker</dc:creator><author>编码者-thinker</author><pubDate>Mon, 13 Dec 2010 15:05:00 GMT</pubDate><guid>http://www.cppblog.com/xiaoyu0720/archive/2010/12/13/136337.html</guid><wfw:comment>http://www.cppblog.com/xiaoyu0720/comments/136337.html</wfw:comment><comments>http://www.cppblog.com/xiaoyu0720/archive/2010/12/13/136337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xiaoyu0720/comments/commentRss/136337.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xiaoyu0720/services/trackbacks/136337.html</trackback:ping><description><![CDATA[<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080">&nbsp;1</span>&nbsp;<span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;move(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">a&nbsp;,</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">b&nbsp;,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;width&nbsp;)<br></span><span style="COLOR: #008080">&nbsp;2</span>&nbsp;<span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(a&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;b&nbsp;)<br></span><span style="COLOR: #008080">&nbsp;4</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">&nbsp;5</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(&nbsp;width</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">&nbsp;6</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">&nbsp;7</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;8</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #008080">&nbsp;9</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #008080">10</span>&nbsp;<span style="COLOR: #000000">}<br></span><span style="COLOR: #008080">11</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;insert_sort(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">array,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;width&nbsp;,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;num&nbsp;,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">comp)(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">a,</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">b)&nbsp;)<br></span><span style="COLOR: #008080">12</span>&nbsp;<span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">13</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,j;<br></span><span style="COLOR: #008080">14</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">ptr;<br></span><span style="COLOR: #008080">15</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">mid&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)malloc(&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;num&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;width&nbsp;);&nbsp;<br></span><span style="COLOR: #008080">16</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;ptr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)array;<br></span><span style="COLOR: #008080">17</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="COLOR: #008080">18</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;memset(mid,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(mid));<br></span><span style="COLOR: #008080">19</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;num&nbsp;;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;)<br></span><span style="COLOR: #008080">20</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">21</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move(mid&nbsp;,&nbsp;ptr&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">width&nbsp;,&nbsp;width&nbsp;);<br></span><span style="COLOR: #008080">22</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;i&nbsp;;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;;&nbsp;j</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">&nbsp;)<br></span><span style="COLOR: #008080">23</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">24</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(comp(&nbsp;mid&nbsp;,ptr&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;(j&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">width&nbsp;)&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br></span><span style="COLOR: #008080">25</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="COLOR: #008080">26</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">27</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #008080">28</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move(&nbsp;ptr&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;j</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">width&nbsp;,&nbsp;ptr&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;(j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">width&nbsp;,width&nbsp;);<br></span><span style="COLOR: #008080">29</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #008080">30</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move(ptr&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;j&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;width&nbsp;,&nbsp;mid&nbsp;,&nbsp;width&nbsp;);<br></span><span style="COLOR: #008080">31</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;j&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;num&nbsp;;&nbsp;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;)<br></span><span style="COLOR: #008080">32</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(ptr&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;width</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">j));<br></span><span style="COLOR: #008080">33</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="COLOR: #008080">34</span>&nbsp;<span style="COLOR: #000000">}<br></span><span style="COLOR: #008080">35</span>&nbsp;<span style="COLOR: #000000"><br></span><span style="COLOR: #008080">36</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;cmp(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">a,</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">b&nbsp;)<br></span><span style="COLOR: #008080">37</span>&nbsp;<span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">38</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">aa&nbsp;,</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">bb;<br></span><span style="COLOR: #008080">39</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;aa&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)&nbsp;a;<br></span><span style="COLOR: #008080">40</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;bb&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)&nbsp;b;<br></span><span style="COLOR: #008080">41</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">bb&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">aa&nbsp;;<br></span><span style="COLOR: #008080">42</span>&nbsp;<span style="COLOR: #000000">}</span></div>
<br>
<img src ="http://www.cppblog.com/xiaoyu0720/aggbug/136337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xiaoyu0720/" target="_blank">编码者-thinker</a> 2010-12-13 23:05 <a href="http://www.cppblog.com/xiaoyu0720/archive/2010/12/13/136337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通信简史</title><link>http://www.cppblog.com/xiaoyu0720/archive/2010/09/26/127758.html</link><dc:creator>编码者-thinker</dc:creator><author>编码者-thinker</author><pubDate>Sun, 26 Sep 2010 07:18:00 GMT</pubDate><guid>http://www.cppblog.com/xiaoyu0720/archive/2010/09/26/127758.html</guid><wfw:comment>http://www.cppblog.com/xiaoyu0720/comments/127758.html</wfw:comment><comments>http://www.cppblog.com/xiaoyu0720/archive/2010/09/26/127758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xiaoyu0720/comments/commentRss/127758.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xiaoyu0720/services/trackbacks/127758.html</trackback:ping><description><![CDATA[<span class=t1><a name=l1></a><strong>定义</strong></span>通信原指人与人相互之间交换信件，以便彼此交流，互换信息。现在被推广为人与人之间同过某种媒体进行的信息交流与传递。也可以特指通信或电信行业。<br>《<a href="http://baike.c114.net/view.asp?中华人民共和国电信条例" target=_blank><u><font color=#0000ff>中华人民共和国电信条例</font></u></a>》给电信的定义如下：&#8220;是指利用有线、无线的电磁系统或者光电系统，传送、发射或者接收语音、文字、数据、图像以及其他任何形式信息的活动。&#8221;<br>
<div class=titord><span class=arr><a title=返回顶部目录 href="http://baike.c114.net/view.asp?id=9583-6DA001DB&amp;word=通信#"></a></span><span class=t1><a name=l2></a><strong>方式</strong></span></div>
古代：烽火台、击鼓、驿站、信鸽、旗语、身体语言、接触、眼神等<br>现代：电报，固定电话，移动电话，短信，电子邮件（E-MAIL），网络电话（<a href="http://baike.c114.net/view.asp?VOIP" target=_blank><u><font color=#0000ff>VOIP</font></u></a>）等<br>
<div class=titord><span class=arr><a title=返回顶部目录 href="http://baike.c114.net/view.asp?id=9583-6DA001DB&amp;word=通信#"></a></span><span class=t1><a name=l3></a><strong>世界通信简史</strong></span></div>
通信，最早可以追溯到古代的中国与非洲。在古中国，人们用烽火来传递消息，既&#8220;白天生烟，夜晚举火&#8221;。而在古非洲，击鼓传信是最早最方便的办法，非洲人用圆木特制的大鼓可传声至三四公里远，再通过&#8220;鼓声接力&#8221;和专门的&#8220;击鼓语言&#8221;，可在很短的时间内把消息准确地传到50公里以外的另一个部落。<br><br>公元968年，中国人发明了一种叫&#8220;<a href="http://baike.c114.net/view.asp?竹信" target=_blank><u><font color=#0000ff>竹信</font></u></a>&#8221;的东西,它被认为是今天电话的雏形。<br><br>欧洲对于远距离传送声音的研究始于17世纪。英国著名的物理学家和化学家<a href="http://baike.c114.net/view.asp?罗伯特&#183;胡克" target=_blank><u><font color=#0000ff>罗伯特&#183;胡克</font></u></a>首先提出了远距离传送话音的建议。<br><br>1753年2月17日，《苏格兰人》杂志上发表了一封署名C.M的书信。在这封信中，作者提出了用电流进行通信的大胆设想。他建议：把一组金属线从一个地点延伸到另一个地点，每根金属线与一个字母相对应。在一端发报时，便根据报文内容将一条条金属线与静电机相连接，使它们依次通过电流。电流通过金属线上的小球便将挂在它下面的写有不同字母或数字的小纸片吸了起来，从而起到远距离传递信息的作用<br><br>1793年，法国<a href="http://baike.c114.net/view.asp?查佩兄弟" target=_blank><u><font color=#0000ff>查佩兄弟</font></u></a>俩在巴黎和里尔之间架设了一条230千米长的接力方式传送信息的托架式线路。这是一种由16个信号塔组成的通信系统。信号机由信号员在下边通过绳子和滑轮，操纵支架的不同角度，表示相关的信息。当时，法国和奥地利正在作战，信号系统只用一个小时就把从奥军手中夺取埃斯河畔孔代的胜利消息传到巴黎。以后，比利时、荷兰、意大利、德国及俄国等也先后建立了这样的通信系统。据说查佩两兄弟之一是第一个使用&#8220;电报&#8221;这个词的人。<br><br>而在1796年，休斯提出了用话筒接力传送语音信息的办法，并且把这种通信方式称为—Telephone，一直延用至今。<br><br>1837年，美国画家<a href="http://baike.c114.net/view.asp?莫尔斯" target=_blank><u><font color=#0000ff>莫尔斯</font></u></a>从在电线中流动的电流在电线突然截止时会迸出火花这一事实得到启发设计出了著名的<a href="http://baike.c114.net/view.asp?莫尔斯电码" target=_blank><u><font color=#0000ff>莫尔斯电码</font></u></a>。它是利用&#8220;点&#8221;、&#8220;划&#8221;和&#8220;间隔&#8221;的不同组合来表示字母、数字、标点和符号。并于1844年5月24日，在华盛顿国会大厦联邦最高法院会议厅里，亲手操纵着电报机，用莫尔斯电码发出了世界上第一份电报。内容为&#8220;上帝创造了何等奇迹&#8221;。<br><br>1850年8月28日，英国人<a href="http://baike.c114.net/view.asp?约翰" target=_blank><u><font color=#0000ff>约翰</font></u></a>(John)和<a href="http://baike.c114.net/view.asp?雅各布&#183;布雷特" target=_blank><u><font color=#0000ff>雅各布&#183;布雷特</font></u></a>(Jacob Brett)兄弟俩在法国的格里斯—奈兹海角（Cape Gris-Nez）和英国索兰海角（Cape Souther-land）之间的公海里用&#8220;巨人&#8221;号拖船在英法两国之间的多佛尔海峡敷设了第一条海缆。<br><br>1857年8月7日第一条横贯大西洋海底海缆开始铺设。由英国西海岸至美国东海岸。1858年8月5日总长为3240公里的电缆敷缆完毕。凌晨二点四十五分，第一份海缆电报横越大西洋。<br><br>1865年5月17日，<a href="http://baike.c114.net/view.asp?国际电报联盟" target=_blank><u><font color=#0000ff>国际电报联盟</font></u></a>（International Telegraph Union ，<a href="http://baike.c114.net/view.asp?ITU" target=_blank><u><font color=#0000ff>ITU</font></u></a>）在巴黎成立，它由法、德、俄、意、奥等20个欧洲国家组成；1932年，70多个国家的代表在西班牙马德里召开会议，决定自1934年1月1日起正式改称为&#8220;<a href="http://baike.c114.net/view.asp?国际电信联盟" target=_blank><u><font color=#0000ff>国际电信联盟</font></u></a>&#8221;（International Telecommunication Union）。1969年5月17日，国际电信联盟第二十四届行政理事会正式通过决议，决定把国际电信联盟的成立日——5月17日定为&#8220;<a href="http://baike.c114.net/view.asp?世界电信日" target=_blank><u><font color=#0000ff>世界电信日</font></u></a>&#8221;<br><br>1875年6月2日，美国人<a href="http://baike.c114.net/view.asp?亚力山大.格雷厄姆.贝尔" target=_blank><u><font color=#0000ff>亚力山大.格雷厄姆.贝尔</font></u></a>(Bell,Alekander Graham)发明了<a href="http://baike.c114.net/view.asp?电话" target=_blank><u><font color=#0000ff>电话</font></u></a>。至今美国波士顿法院路109号的门口，仍钉着块镌有：1875年6月2日电话诞生在这里的铜牌。1876年2月14日，贝尔申请了那个著名的他和沃森一直研究着的装置——电话的专利。1876年3月7日，贝尔获得发明电话专利，专利证号码NO:174655。<br><br>1876年3月10日,贝尔在做实验时不小心把硫酸溅到自己的腿上,疼痛之中他叫了起来:&#8220;沃森先生，快来帮我啊！&#8221;没有想到，这句话通过实验中的电话传到了在另一个房间工作的他的助手沃森的耳朵里。这句极普通的话，也就成为人类第一句通过电话传送的话音而记入史册。<br><br>1877年4月27日，<a href="http://baike.c114.net/view.asp?爱迪生" target=_blank><u><font color=#0000ff>爱迪生</font></u></a>申请了一个专利，这是一个改进后的电话话筒。在此之前两周，也有人也申请了电话话筒的发明专利。但爱迪生的巨大成就使人们忽视了这个名叫<a href="http://baike.c114.net/view.asp?Emile Berliner" target=_blank><u><font color=#0000ff>Emile Berliner</font></u></a>的人。电话话筒的意义在于使电话走向了实用。<br><br>1877年7月9日，<a href="http://baike.c114.net/view.asp?贝尔电话公司" target=_blank><u><font color=#0000ff>贝尔电话公司</font></u></a>成立。<br><br>1878年1月28日，美国康涅狄格州的纽好恩，第一个市内电话交换所开通，当时只有20 个用户。 <br><br>1878年2月18日，世界上第一个电话号簿在美国New Haven Connecticut出版。<br><br>1879年，爱迪生利用电磁效应，制成<a href="http://baike.c114.net/view.asp?炭精送话器" target=_blank><u><font color=#0000ff>炭精送话器</font></u></a>，使送话效果显著提高。爱迪生炭精话筒的原理及其器件一直沿用至今。<br><br>1882年，电话线采用双绞线。这是英国教授<a href="http://baike.c114.net/view.asp?休斯" target=_blank><u><font color=#0000ff>休斯</font></u></a>1879年发表架空线干扰的论文引起的结果。<br><br>1887年3月21日，德国物理学家<a href="http://baike.c114.net/view.asp?赫兹" target=_blank><u><font color=#0000ff>赫兹</font></u></a>（Hertz）在实验中证实了电磁波的存在，赫兹的发现具有划时代的意义，它不但证明了麦克斯韦理论的正确，更重要的是导致了无线电的诞生，开辟了电子技术的新纪元，标志着从&#8220;有线电通信&#8221;向&#8220;无线电通信&#8221;的转折点。也是整个移动通信的发源点，应该说，从这时开始，人类开始进入了无线通信的新领域。<br><br>1892年11月3日，用<a href="http://baike.c114.net/view.asp?史端乔" target=_blank><u><font color=#0000ff>史端乔</font></u></a>发明的接线器制成的&#8220;<a href="http://baike.c114.net/view.asp?步进制自动电话交换机" target=_blank><u><font color=#0000ff>步进制自动电话交换机</font></u></a>&#8221;在美国印第安纳州拉波特城安装使用。这是第一部自动交换局。<br><br>1895年5月7日，俄国科学家<a href="http://baike.c114.net/view.asp?波波夫" target=_blank><u><font color=#0000ff>波波夫</font></u></a>发明<a href="http://baike.c114.net/view.asp?无线电接收机" target=_blank><u><font color=#0000ff>无线电接收机</font></u></a>。1896年3月24日，波波夫和雷布金在俄国物理化学协会的年会上作了用无线电传送<a href="http://baike.c114.net/view.asp?莫尔斯电码" target=_blank><u><font color=#0000ff>莫尔斯电码</font></u></a>的表演。他们操纵自已制作的无线电收发信机，拍发了&#8220;Heinoich Hertz&#8221;（海因里希.赫兹）一词，以表示对这位电磁波先驱者的崇敬。虽然当时的通信距离中只有250米，但这却是世界上最早通过无线电传送的有明确内容的电报。<br><br>1897年5月18日,<a href="http://baike.c114.net/view.asp?马可尼" target=_blank><u><font color=#0000ff>马可尼</font></u></a>进行横跨布里斯托尔（Bristol）海峡的无线电通信取得成功，就在固定站与一艘拖船之间，通信距离为18海里。<br><br>1899年3月28日，意大利物理学家G.马可尼在英国南福兰角建立了一个无线电报站，用来与法国维姆勒之间的通信，两地距离为31英里，实现了英国与欧洲大陆的无线电通信。与同一时期在俄国受到冷遇的波波夫相比，马可尼要幸运得多，他得到了英国邮政部的全力支持。1896年6月2日，他获得无线电报专利；1900年10月，他在英国普耳杜建立一座大功率发射台，采用10千瓦的音响火花式电报发射机；1901年12月，马可尼在加拿大纽芬兰市的圣约翰斯港通过风筝牵引的天线，成功地接收到普耳杜电台发来的电报。马可尼的成功在世界各地引起巨大的轰动，推动无线电通信走向了全面实用的阶段。<br><br>1906: 美国的<a href="http://baike.c114.net/view.asp?Lee De Forest" target=_blank><u><font color=#0000ff>Lee De Forest</font></u></a>发明了电子管。在这之前造出数字电子计算机是不可能的。这为电子计算机的发展奠定了基础。<br><br>1906年12月24日圣诞节前夕，晚上8点左右，在美国新英格兰海岸附近穿梭往来的船只上，一些听惯了&#8220;嘀嘀嗒嗒&#8221;莫尔斯电码声的报务员们，忽然听到耳机中传来有人正在朗读圣经的故事，有人拉着小提琴，还伴奏有亨德尔的《舒缓曲》，报务员们怔住了，他们大声地叫喊着同伴的名字，纷纷把耳机传递给同伴听，果然，大家都清晰地听到说话声和乐曲声，最后还听到亲切的祝福声，几分钟后，耳机中又传出那听惯了的电码声。其实这并不是什么奇迹的出现，而是由美国物理学家<a href="http://baike.c114.net/view.asp?费森登" target=_blank><u><font color=#0000ff>费森登</font></u></a>主持和组织的人类历史上第一次<a href="http://baike.c114.net/view.asp?无线电广播" target=_blank><u><font color=#0000ff>无线电广播</font></u></a>。这套广播设备是由费森登花了4年的时间设计出来的，包括特殊的高频交流无线电发射机和能调制电波振幅的系统，从这时开始，电波就能载着声音开始展翅飞翔了。在这之前，也有无数人在无线电研究上取得了成果，其中最出名的就是无线电广播之父——美国人<a href="http://baike.c114.net/view.asp?巴纳特&#183;史特波斐德" target=_blank><u><font color=#0000ff>巴纳特&#183;史特波斐德</font></u></a>，他于1886年便开始研究，经过十几年不懈努力而取得了成功，在1902年，他在肯塔基州穆雷市进行了第一次无线电广播。他们在穆雷广场放好话筒，由巴纳特&#183;史特波斐德的儿子在话筒前说话、吹奏口琴，他在附近的树林里放置了5台矿石收音机，均能清晰地听到说话和口琴声，试验获得了成功。之后又在费城进行了广播，并获得了专利权。现在，州立穆雷大学仍树有&#8220;无线电广播之父——巴纳特&#183;史特波斐德&#8221;的纪念碑。<br><br>1907年11月8日，法国科学家<a href="http://baike.c114.net/view.asp?爱德华&#183;贝兰" target=_blank><u><font color=#0000ff>爱德华&#183;贝兰</font></u></a>当众表演相片<a href="http://baike.c114.net/view.asp?传真" target=_blank><u><font color=#0000ff>传真</font></u></a>——用电传送图片。一般认为，是爱德华&#183;贝兰使传真技术走向实用化。<br><br>1920年2月23日，世界上第一个无线电话新闻服务开通。<br><br>1925年10月2日，英国发明家<a href="http://baike.c114.net/view.asp?贝尔德" target=_blank><u><font color=#0000ff>贝尔德</font></u></a>在前人研究的基础上终于制成了世界上第一台有实用价值的电视机。<br><br>1941年，<a href="http://baike.c114.net/view.asp?摩托罗拉" target=_blank><u><font color=#0000ff>摩托罗拉</font></u></a>生产出了美军参战时唯一的便携式无线电通讯工具——5磅重手持对讲无线电样机及此后的<a href="http://baike.c114.net/view.asp?SCR-300型高频率调频背负式通话机" target=_blank><u><font color=#0000ff>SCR-300型高频率调频背负式通话机</font></u></a>。<br><br>1946: <a href="http://baike.c114.net/view.asp?ENIAC" target=_blank><u><font color=#0000ff>ENIAC</font></u></a> (Electronic Numerical Integrator 和 Computer): 第一台真正意义上的数字电子计算机。开始研制于1943年，完成于1946年。负责人是<a href="http://baike.c114.net/view.asp?John W. Mauchly" target=_blank><u><font color=#0000ff>John W. Mauchly</font></u></a>和<a href="http://baike.c114.net/view.asp?J.Presper Eckert" target=_blank><u><font color=#0000ff>J.Presper Eckert</font></u></a>。重30吨，18000个电子管，功率25千瓦。主要用于计算弹道和氢弹的研制。<br><br>1948年6月30日，<a href="http://baike.c114.net/view.asp?贝尔实验室" target=_blank><u><font color=#0000ff>贝尔实验室</font></u></a>向公众展示了用以取代真空管的晶体管<br><br>1951: <a href="http://baike.c114.net/view.asp?UNIVAC-1" target=_blank><u><font color=#0000ff>UNIVAC-1</font></u></a>：第一台商用计算机系统。设计者：<a href="http://baike.c114.net/view.asp?J. Presper Eckert" target=_blank><u><font color=#0000ff>J. Presper Eckert </font></u></a>和<a href="http://baike.c114.net/view.asp?John Mauchly" target=_blank><u><font color=#0000ff>John Mauchly</font></u></a>。被美国人口普查部门用于人口普查，标志着计算机的应用进入了一个新的、商业应用的时代。<br><br>1956年，第一个<a href="http://baike.c114.net/view.asp?无线电寻呼机" target=_blank><u><font color=#0000ff>无线电寻呼机</font></u></a>在摩托罗拉问世。<br><br>1957年10月4日，原苏联发射了第一颗<a href="http://baike.c114.net/view.asp?人造地球卫星" target=_blank><u><font color=#0000ff>人造地球卫星</font></u></a>，地球上第一次收到了来自人造卫星的电波。它不仅标志着航天时代的开始， 也意味着一个利用卫星进行通信的时代即将到来。<br><br>1958年9月12日: 在<a href="http://baike.c114.net/view.asp?Robert Noyce" target=_blank><u><font color=#0000ff>Robert Noyce</font></u></a>（<a href="http://baike.c114.net/view.asp?INTEL" target=_blank><u><font color=#0000ff>INTEL</font></u></a>公司的创始人）的领导下，发明了<a href="http://baike.c114.net/view.asp?集成电路" target=_blank><u><font color=#0000ff>集成电路</font></u></a>。<br><br>1960年8月12日，美国国防部把覆有铝膜的、直径为30米的气球卫星&#8220;回声1号&#8221;（Echo I）发射到距离地面高度约1600公里的圆形轨道上，进行通信试验。这是世界第一个&#8220;<a href="http://baike.c114.net/view.asp?无源通信卫星" target=_blank><u><font color=#0000ff>无源通信卫星</font></u></a>&#8221;。由于这颗卫星上没有电源，故称之为&#8220;无源卫星&#8221;。它只能将信号反射，为地球上的其它地点所接收到，从而实现通信。但由于这种方式的效率太低，没有多大实用价值。<br><br>1961年：美国麻省理工学院的<a href="http://baike.c114.net/view.asp?伦纳德.克兰罗克" target=_blank><u><font color=#0000ff>伦纳德.克兰罗克</font></u></a>(Leonard Kleinrock)博士发表了<a href="http://baike.c114.net/view.asp?分组交换技术" target=_blank><u><font color=#0000ff>分组交换技术</font></u></a>的论文，该技术后来成了<a href="http://baike.c114.net/view.asp?互联网" target=_blank><u><font color=#0000ff>互联网</font></u></a>的标准通信方式。<br><br>1963年8月23日，肯尼迪总统引用莫尔斯拍发的第一份公众电报报文&#8220;上帝创造了何等奇迹&#8221;结束了他与尼日利亚总理会话，这是经&#8220;辛康姆（Syncom）&#8221;通信卫星的第一次电话会话，声音传播了72000多公里。<br><br>1964年8月19日，美国发射了&#8220;同步3号&#8221;（Syncom Ⅲ）卫星。这是世界上第一颗地球同步静止轨道通信卫星。<br><br>1958年12月18日，美国发射了第一颗通信卫星，由于技术上的原因，仅仅工作了13天。从此，卫星通信进入实验阶段。1963年至1964年美国发射了三颗实验性地球同静止轨道卫星，只有第三颗卫星&#8220;同步3号&#8221;完全成功。<br><br>1964年8月20日，成立了以美国通信卫星有限公司为首的&#8220;国际通信卫星财团&#8221;，次年更名为&#8220;国际通信卫星组织&#8221;，即著名的<a href="http://baike.c114.net/view.asp?INTELSAT" target=_blank><u><font color=#0000ff>INTELSAT</font></u></a>。这一组织总部设在华盛顿，其宗旨是建议和发展一个全球通信卫星系统，一视同仁地供世界各国使用，以便改进其电信服务。确立了卫星通信体制和标准地球站的性能标准，卫星通信业务从此正式成为一种国际间的商用业务。<br><br>1969年：美国国防部开始起动具有抗核打击性的计算机网络开发计划&#8220;<a href="http://baike.c114.net/view.asp?ARPANET" target=_blank><u><font color=#0000ff>ARPANET</font></u></a>&#8221;。<br><br>1971年：位于美国剑桥的<a href="http://baike.c114.net/view.asp?BBN" target=_blank><u><font color=#0000ff>BBN</font></u></a>科技公司的工程师<a href="http://baike.c114.net/view.asp?雷.汤姆林森" target=_blank><u><font color=#0000ff>雷.汤姆林森</font></u></a>(Ray Tomlinson)开发出了<a href="http://baike.c114.net/view.asp?电子邮件" target=_blank><u><font color=#0000ff>电子邮件</font></u></a>。此后ARPANET的技术开始向大学等研究机构普及。<br><br>1976年6月，世界上第一张<a href="http://baike.c114.net/view.asp?电话卡" target=_blank><u><font color=#0000ff>电话卡</font></u></a>在意大利诞生。<br><br>1977年，世界上第一个商用光纤通信系统在美国芝加哥的两个电话局（相距7公里）之间开通，使用<a href="http://baike.c114.net/view.asp?多模光纤" target=_blank><u><font color=#0000ff>多模光纤</font></u></a>，波长0.85&#956;m，速率为44.736Mbit/s。 <br><br>1978年贝尔实验室的科学家们在芝加哥试验成功了世界上第一个<a href="http://baike.c114.net/view.asp?蜂窝移动通信系统" target=_blank><u><font color=#0000ff>蜂窝移动通信系统</font></u></a>，并于1983年正式投入商用。这是移动通信发展史上的重大发明。<br><br>1978年在美国芝加哥开通了第一个<a href="http://baike.c114.net/view.asp?移动电话通信系统" target=_blank><u><font color=#0000ff>移动电话通信系统</font></u></a>。<br><br>1983年：ARPANET宣布将把过去的通信协议&#8220;<a href="http://baike.c114.net/view.asp?NCP" target=_blank><u><font color=#0000ff>NCP</font></u></a>(网络控制协议)&#8221;向新协议&#8220;<a href="http://baike.c114.net/view.asp?TCP/IP" target=_blank><u><font color=#0000ff>TCP/IP</font></u></a>(传输控制协议/互联网协议)&#8221;过渡。<br><br>1984年美国苹果计算机公司推出了第一台多媒体计算机。<br><br>1988年：美国伊利诺斯大学的学生(当时)史蒂夫.多那(Steve Dorner)开始开发电子邮件软件&#8220;Eudora&#8221;。<br><br>1988: 光计算机投入开发，用光子代替电子，可以提高计算机的处理速度<br><br>1991年：<a href="http://baike.c114.net/view.asp?CERN" target=_blank><u><font color=#0000ff>CERN</font></u></a>(欧洲粒子物理研究所)的科学家<a href="http://baike.c114.net/view.asp?提姆.伯纳斯李" target=_blank><u><font color=#0000ff>提姆.伯纳斯李</font></u></a>(Tim Berners-Lee)开发出了<a href="http://baike.c114.net/view.asp?万维网" target=_blank><u><font color=#0000ff>万维网</font></u></a>(World Wide Web)。他还开发出了极其简单的<a href="http://baike.c114.net/view.asp?浏览器" target=_blank><u><font color=#0000ff>浏览器</font></u></a>(浏览软件)。此后互联网开始向社会大众普及。<br><br>1993年：伊利诺斯大学美国国家超级计算机应用中心的学生<a href="http://baike.c114.net/view.asp?马克.安德里森" target=_blank><u><font color=#0000ff>马克.安德里森</font></u></a>(Mark Andreesen)等人开发出了真正的浏览器&#8220;<a href="http://baike.c114.net/view.asp?Mosaic" target=_blank><u><font color=#0000ff>Mosaic</font></u></a>&#8221;。该软件后来被作为<a href="http://baike.c114.net/view.asp?Netscape Navigator" target=_blank><u><font color=#0000ff>Netscape Navigator</font></u></a>推向市场。此后互联网开始得以爆炸性普及。正是因为通过采用具有扩展性的通信协议TCP/IP，才能够将不同网络相互连接。因此，开发TCP/IP协议的UCLA(加州大学洛杉矶分校)的学生(当时)<a href="http://baike.c114.net/view.asp?文顿.瑟夫" target=_blank><u><font color=#0000ff>文顿.瑟夫</font></u></a>(Vinton G. Cerf)等如今甚至被誉为&#8220;互联网之父&#8221;。<br><br>1998年9月21日，英国捷足先登，成为世界上第一个试播<a href="http://baike.c114.net/view.asp?数字电视" target=_blank><u><font color=#0000ff>数字电视</font></u></a>的国家。<br><br>
<div class=titord><span class=arr><a title=返回顶部目录 href="http://baike.c114.net/view.asp?id=9583-6DA001DB&amp;word=通信#"></a></span><span class=t1><a name=l4></a><strong>中国通信简史</strong></span></div>
1871年，英国、俄罗斯、丹麦敷设的香港至上海、长崎至上海的水线，全长2237海里。于1871年4月，违反清政府不得登陆的规定，由丹麦大北电报公司出面，秘密从海上将海缆引出，沿扬子江、黄浦江敷设到上海市内登陆，并在南京路12号设立报房。于1871年6月3日开始通报。这是中国的第一条电报水线和在上海租界设立的电报局。 <br><br>1873年，法国驻华人员<a href="http://baike.c114.net/view.asp?威基杰" target=_blank><u><font color=#0000ff>威基杰</font></u></a>（S&#183;A&#183;Viguer）参照《康熙字典》的部首排列方法，挑选了常用汉字6800多个，编成了第一部汉字电码本，名为《<a href="http://baike.c114.net/view.asp?电报新书" target=_blank><u><font color=#0000ff>电报新书</font></u></a>》。后由我国的<a href="http://baike.c114.net/view.asp?郑观应" target=_blank><u><font color=#0000ff>郑观应</font></u></a>将其改编成为《<a href="http://baike.c114.net/view.asp?中国电报新编" target=_blank><u><font color=#0000ff>中国电报新编</font></u></a>》。这是中国最早的汉字电码本。中国人最早研制的电报机华侨商人<a href="http://baike.c114.net/view.asp?王承荣" target=_blank><u><font color=#0000ff>王承荣</font></u></a>从法国回国后，与福州的<a href="http://baike.c114.net/view.asp?王斌" target=_blank><u><font color=#0000ff>王斌</font></u></a>研制出我国第一台电报机，并呈请政府自办电报。清政府拒不采纳。 <br><br>1875年，福建巡抚丁日昌积极倡导创办电报。1875年在福建船政学堂附设了电报学堂，培训电报技术人员。这是中国第一所电报学堂。1877年，福建巡抚丁日昌利用去台湾视事的机会提出设立台湾电报局，拟定了修建电报线路的方案，并派电报学堂学生苏汝灼、陈平国等专司其事。先由旗后（即今高雄）造至府城（即今台南）。负责工程的是武官沈国光。于1877年8月开工，同年10月11日完工，全线长95华里。这是中国人自己修建、自己掌管的第一条电报线。 <br><br>1879年，李鸿章在其所辖范围内修建大沽（炮台）、北塘（炮台）至天津，以及从天津兵工厂至李鸿章衙门的电报线路。这是中国大陆上自主建设的第一条军用电报线路。 <br><br>1880年，李鸿章在天津设立电报总局，派盛宣怀为总办。并在天津设立电报学堂，聘请丹麦人博尔森和克利钦生为教师，委托<a href="http://baike.c114.net/view.asp?大北电报公司" target=_blank><u><font color=#0000ff>大北电报公司</font></u></a>向国外订购电信器材，为建设津沪电报线路作准备。1881年，从上海、天津两端同时开工，至12月24日，全长3075华里的津沪电报线路全线竣工。1881年12月28日正式开放营业，收发公私电报，全线在紫竹林、大沽口、清江浦、济宁、镇江、苏州、上海七处设立了电报分局。这是中国自主建设的第一条长途公众电报线路。 <br><br>1882年2月21日，丹麦大北电报公司在上海开通了第一个<a href="http://baike.c114.net/view.asp?人工电话交换所" target=_blank><u><font color=#0000ff>人工电话交换所</font></u></a>。当时有用户二十多家，每个话机年租金为银元150元。 <br><br>1887年，在当时的台湾巡抚刘铭传的主持下，花费重金敷设了长达433里的福州至台湾的电报水线--闽台海缆，于1887年竣工。它使台湾与大陆联通一气，对台湾的开发起了重要作用。这是中国自主建设的第一条<a href="http://baike.c114.net/view.asp?海底电缆" target=_blank><u><font color=#0000ff>海底电缆</font></u></a>。<br><br>1889年，当时在安徽主管安庆电报业务的彭名保设计制造成我国第一部电话机，取名为"<a href="http://baike.c114.net/view.asp?传声器" target=_blank><u><font color=#0000ff>传声器</font></u></a>"，通话距离最远可达300华里。 <br><br>1899年，我国最早使用无线电通信的地区是广州。早在1899年，就在广州督署、马口、前山、威远等要塞以及广海、宝壁、龙骧、江大、江巩等江防军舰上设立无线电机。 <br><br>1900年，南京首先自行开办了磁石式电话局，以后苏州、武汉、广州、北京、天津、上海、太原、沈阳等城市，在1900年到1906年之间也先后自行开办了市内电话局。使用的都是<a href="http://baike.c114.net/view.asp?磁石式电话交换机" target=_blank><u><font color=#0000ff>磁石式电话交换机</font></u></a>。 <br><br>1901年，丹麦人濮尔生趁八国联军入侵中国之机，在天津私设电话所，称为"<a href="http://baike.c114.net/view.asp?电铃公司" target=_blank><u><font color=#0000ff>电铃公司</font></u></a>"。1901年，该公司将电话线从天津伸展到北京，在北京城内私设电话，发展市内用户不到百户，都是使馆、衙署等。并开通了北京和天津之间的长途电话。 <br><br>1905年，7月，北洋大臣袁世凯在天津开办了无线电训练班，聘请意大利人葛拉斯为教师。他还托葛拉斯代购<a href="http://baike.c114.net/view.asp?马可尼猝灭火花式无线电机" target=_blank><u><font color=#0000ff>马可尼猝灭火花式无线电机</font></u></a>，在南苑、保定、天津等处行营及部分军舰上装用，用无线电进行相互联系。1906年，因广东琼州海缆中断，在琼州和徐闻两地设立了无线电机，在两地间开通了民用无线电通信。这是中国民用无线电通信之始。 <br><br>1907年，北京市内电话改为共电式，4月1日，内外城电话一律改为共电式，月租费墙机由4元改为5元，桌机由5元改为6元，通话质量改善，用户已发展到2000户以上。同年5月15日，英商上海华洋德律风公司的<a href="http://baike.c114.net/view.asp?万门共电式交换设备" target=_blank><u><font color=#0000ff>万门共电式交换设备</font></u></a>投入使用。 <br><br>1908年，英商在上海英租界的汇中旅馆私设了一部无线电台，与海上船舶通报。后由清政府收买，移装到上海电报总局内，这是上海地区最早的无线电台。 <br><br>1911年，德商西门子德律风公司向清政府申请，要求在北京、南京设立<a href="http://baike.c114.net/view.asp?无线电报机" target=_blank><u><font color=#0000ff>无线电报机</font></u></a>，进行远距离无线电通信试验。电台分设在北京东便门和南京狮子山，通报试验结果良好。辛亥革命时，南北有线电通信阻断，南北通信就靠这两地的试验电台沟通。 <br><br>1912年，即民国元年，接管清政府邮传部，改组为交通部，设电政、邮政、路政、航政四个司。是年：上海电报局开始用打字机抄收电报。京津长途电话线路加装<a href="http://baike.c114.net/view.asp?加感线圈" target=_blank><u><font color=#0000ff>加感线圈</font></u></a>（即<a href="http://baike.c114.net/view.asp?普平线圈" target=_blank><u><font color=#0000ff>普平线圈</font></u></a>或<a href="http://baike.c114.net/view.asp?负载线圈" target=_blank><u><font color=#0000ff>负载线圈</font></u></a>），提高通话质量。<a href="http://baike.c114.net/view.asp?国际无线电报公会" target=_blank><u><font color=#0000ff>国际无线电报公会</font></u></a>规定我国无线电的呼号范围为XNA--XSZ。 <br><br>1913年8月，交通部传习所设有线电工程班和高等电气工程班，分习有线电、无线电各项工程。同年，北京设立邮电学校。设高等班（二年毕业）和中等班（一年毕业）。 <br><br>1919年4月增设"电话专修班"（入学学生以国内外大专学校电机科毕业生为限），招收学员20名。成立北京无线电报局，装设5千瓦无线电发报机，地址在东便门外。1919年4月，北京无线电报局迁至天坛。在北京无线电报局东便门原址设立远程收报处，应用<a href="http://baike.c114.net/view.asp?真空管式无线电接收机" target=_blank><u><font color=#0000ff>真空管式无线电接收机</font></u></a>直接接收欧美各国的广播新闻。6月28日，将直接收到的中国出席巴黎和会代表拒签对德和约的消息，传报给正在总统府前静坐示威的学生，从此打破了外商大北、大东、太平洋三家电报公司垄断传递国外新闻的局面 <br><br>1920年9月1日,中国加入<a href="http://baike.c114.net/view.asp?国际无线电报公约 <br>" target=_blank><u><font color=#0000ff>国际无线电报公约 <br></font></u></a><br>1921年1月7日，中国加入<a href="http://baike.c114.net/view.asp?国际电报公约" target=_blank><u><font color=#0000ff>国际电报公约</font></u></a>（万国电报公约1923年1月23日，中国最早与外国通报的无线电台建立。<br><br>5月，由英商承建的喀什噶尔电台建成，与印度北撒孚通报，效果清晰良好。这是我国最先与外国进行无线电通报的电台，但该电台与乌鲁木齐通报不佳，英商因此而悄然溜走。<br><br>1924年3月29日，上海华洋德律风公司在租界装设了<a href="http://baike.c114.net/view.asp?爱立信" target=_blank><u><font color=#0000ff>爱立信</font></u></a>生产的自动电话交换机投入使用。这是中国最早使用的<a href="http://baike.c114.net/view.asp?自动电话交换机" target=_blank><u><font color=#0000ff>自动电话交换机</font></u></a>。 <br><br>1924年，在沈阳故宫八角亭先建立了无线电接收机，接收世界各国的新闻，并与德国、法国订立了单向通信（即单向接收欧洲发至中国的电报）。1924年秋，北大营长波电台竣工，装设了10千瓦真空管发报机，实现了与迪化（今新疆乌鲁木齐）和云南的远程通信。 <br><br>1927年6月，沈阳大型<a href="http://baike.c114.net/view.asp?短波电台" target=_blank><u><font color=#0000ff>短波电台</font></u></a>竣工，装设了10千瓦德制<a href="http://baike.c114.net/view.asp?无线电发报机" target=_blank><u><font color=#0000ff>无线电发报机</font></u></a>。年底，成立了沈阳国际无线电台，与德国建立了双向通报电路。这是中国与欧洲直接通信之始。1928年，又增设了美制10千瓦短波发报机。沈阳国际无线电台承接转发北京、上海、天津、汉口等各地的国际电报，成为当时我国最大的国际电台。1928年,这一年全国各地新建了27个短波无线电台。 <br><br>1929年1月14日，上海建设了功率为500瓦的短波无线电台,开始与菲律宾通报，并由菲律宾中转发往欧美的电报。 <br><br>1930年12月，与旧金山、柏林、巴黎建立了直达无线电报通信。正式开通中美、中德、中法电路。这是当时唯一由国家经营的国际电信通信机构。上海南京间开办真迹电报。 <br><br>1931年起，山东、江苏、浙江、安徽、河北、湖南等省先后开办省内长途电话业务。浙江省的长途电话沟通了全省各县。我国第一条长途电话<a href="http://baike.c114.net/view.asp?地下电缆" target=_blank><u><font color=#0000ff>地下电缆</font></u></a>建成。广东建设了广州、香港之间的长途电话地下电缆，有线三十余对，全线长160公里。这是我国第一条地下长途电话电缆。1931年--1934年,上海、南京、天津、青岛、广州、杭州、汉口等城市陆续开办市内自动电话局。 <br><br>1933年,中国电报通信首次使用<a href="http://baike.c114.net/view.asp?打字电报机" target=_blank><u><font color=#0000ff>打字电报机</font></u></a> <br><br>1934年1月起，交通部提出建设"九省联络长途电话"的计划，计划建设江苏、浙江、安徽、江西、湖北、湖南、河南、山东、河北等九省联络长途电话线路，干线总长3173公里，于1935年8月竣工。 <br><br>1936年，浙江省电话局首先在杭州、温州间装设德制的单路载波电话机。这是中国最早使用的<a href="http://baike.c114.net/view.asp?载波电话" target=_blank><u><font color=#0000ff>载波电话</font></u></a>。<br><br>1936年，中国上海与日本东京之间开通了无线电话电路。这是中国第一条国际无线电话电路。 <br><br>1937年，中国在长途干线上开始装用单路或三路载波机。 <br><br>1942年，中美试办无线电相片传真。 <br><br>1943年，中国利用载波电话电路试通<a href="http://baike.c114.net/view.asp?双工音频电报" target=_blank><u><font color=#0000ff>双工音频电报</font></u></a>。 <br><br>1946年，中国开始建设特高频（超短波）电路。<br><br>1947年，上海国际电台开放电传机电路。 <br><br>1948年，上海、旧金山间开放单向无线电相片传真。 <br><br>1950年12月12日，我国第一条有线国际电话电路--北京至莫斯科的电话电路开通。经由苏联转接通往东欧各国的国际电话电路也陆续开通。 <br><br>1950年6月，开始建设的北京国际电台的中央收信台和中央发信台，于1951年相继竣工。这是新中国第一个重点通信建设工程。 <br><br>1952年9月10日，北京至上海的相片传真业务开放。9月24日，北京至莫斯科的国际相片传真业务开放。我国首次开通明线十二路载波电话电路。 <br><br>1952年9月30日，第一套<a href="http://baike.c114.net/view.asp?明线12路载波机" target=_blank><u><font color=#0000ff>明线12路载波机</font></u></a>（J2）装机，开通北京至石家庄的载波电路。<br><br>1954年，研制成功60千瓦短波无线电发射机 <br><br>1956年，上海试制成功<a href="http://baike.c114.net/view.asp?55型电传打字电报机" target=_blank><u><font color=#0000ff>55型电传打字电报机</font></u></a> <br><br>1956年2月28日，北京长途电话局开放会议电话业务。首次会议电话会议为中华全国总工会召开的十省市电话会议。 <br><br>1958年，上海试制成功第一部<a href="http://baike.c114.net/view.asp?纵横制自动电话交换机" target=_blank><u><font color=#0000ff>纵横制自动电话交换机</font></u></a>，第一套国产明线12路载波电话机研制成功 <br><br>1959年，第一套60路长途电缆载波电话机研制成功，北京与莫斯科之间开通国际用户电报业务，1月20日正式开放北京市内电话开始由五位号码向六位号码过渡 <br><br>1963年，<a href="http://baike.c114.net/view.asp?120路高频对称电缆" target=_blank><u><font color=#0000ff>120路高频对称电缆</font></u></a>研制成功 <br><br>1964年，北京至石家庄7&#215;4高频电缆60路载波试验段建成，开始试通电报、电话业务。开始研制<a href="http://baike.c114.net/view.asp?晶体管载波电话机" target=_blank><u><font color=#0000ff>晶体管载波电话机 </font></u></a>。<br><br>1966年，我国第一套长途自动电话编码纵横制交换机研制成功，在北京安装使用 <br><br>1967年，<a href="http://baike.c114.net/view.asp?电子式中文译码机" target=_blank><u><font color=#0000ff>电子式中文译码机</font></u></a>样机试制成功，在上海安装试用 <br><br>1970年，<a href="http://baike.c114.net/view.asp?960路微波通信系统" target=_blank><u><font color=#0000ff>960路微波通信系统</font></u></a>Ⅰ型机研制成功，我国第一颗人造卫星（东方红1号）发射成功。 <br><br>1972年，北京开始建设地球站一号站，1973年建成投产。 <br><br>1974年，北京卫星地球站二号站建成投产，通信容量为132条话路和一条双向彩色电视。通过印度洋上空的国际通信卫星与亚非各国和地区开通直达电路。-研制成功<a href="http://baike.c114.net/view.asp?石英光纤" target=_blank><u><font color=#0000ff>石英光纤</font></u></a>。 <br><br>1978年，<a href="http://baike.c114.net/view.asp?120路脉码调制系统" target=_blank><u><font color=#0000ff>120路脉码调制系统</font></u></a>通过鉴定。-研制成功<a href="http://baike.c114.net/view.asp?多模光纤光缆" target=_blank><u><font color=#0000ff>多模光纤光缆</font></u></a>。 <br><br>1980年，<a href="http://baike.c114.net/view.asp?64路自动转报系统" target=_blank><u><font color=#0000ff>64路自动转报系统</font></u></a>（DJ5-131型）研制成功 <br><br>1982年，首次在市内电话局间使用短波长局间中继光纤通信系统。-256线程控用户电报自动交换系统研制成功并投户使用。-我国自行设计的8频道公用<a href="http://baike.c114.net/view.asp?移动电话系统" target=_blank><u><font color=#0000ff>移动电话系统</font></u></a>在上海投入运营。<br><br>1983年9月16日，上海用150MHz频段开通了我国第一个<a href="http://baike.c114.net/view.asp?模拟寻呼" target=_blank><u><font color=#0000ff>模拟寻呼</font></u></a>系统。-4380路中同轴电缆载波系统研制成功，并通过国家鉴定。 <br><br>1984年4月8日，我国的DFH-2（东方红二号）试验通信卫星成功发射，定点高度为35786公里，4月16日定点于东经125&#176;E赤道上空。通过该星进行了电视传输、声音广播、电话传送等试验。我国开始在长途通信线路上使用<a href="http://baike.c114.net/view.asp?单模光纤" target=_blank><u><font color=#0000ff>单模光纤</font></u></a>，进入了<a href="http://baike.c114.net/view.asp?第三代光纤通信" target=_blank><u><font color=#0000ff>第三代光纤通信</font></u></a>系统。 <br><br>1984年5月1日，广州用150MHz频段开通了我国第一个<a href="http://baike.c114.net/view.asp?数字寻呼" target=_blank><u><font color=#0000ff>数字寻呼</font></u></a>系统。程控中文电报译码机通过鉴定并推广使用。首次具备国际直拨功能的编码纵横制自动电话交换机（HJ09型）研制成功。 <br><br>1985年，上海贝尔公司组装第一批S-1240<a href="http://baike.c114.net/view.asp?程控交换机" target=_blank><u><font color=#0000ff>程控交换机</font></u></a>，广州与香港、深圳、珠海开通<a href="http://baike.c114.net/view.asp?电子邮件" target=_blank><u><font color=#0000ff>电子邮件</font></u></a>。深圳发行了我国第一套<a href="http://baike.c114.net/view.asp?电话卡" target=_blank><u><font color=#0000ff>电话卡</font></u></a>，共3枚，面值87元。我国正式经<a href="http://baike.c114.net/view.asp?国际卫星组织" target=_blank><u><font color=#0000ff>国际卫星组织</font></u></a>的C频段全球波束转发中央电视台的电视节目。北京至南极无线电话通话成功。这是我国电信史上最远距离的<a href="http://baike.c114.net/view.asp?短波通信" target=_blank><u><font color=#0000ff>短波通信</font></u></a>。 <br><br>1986年，7月1日，以北京为中心的国内<a href="http://baike.c114.net/view.asp?卫星通信" target=_blank><u><font color=#0000ff>卫星通信</font></u></a>网建成投产。2日，我国第二颗实用通信卫星发射成功。第一台局用<a href="http://baike.c114.net/view.asp?程控数字电话交换机" target=_blank><u><font color=#0000ff>程控数字电话交换机</font></u></a>（DS-2000）研制成功。 <br><br>1987年，第一个长距离<a href="http://baike.c114.net/view.asp?架空光缆" target=_blank><u><font color=#0000ff>架空光缆</font></u></a>通信系统（34Mb／s）在武汉至荆州、沙市间试通。 <br><br>1987年9月20日，<a href="http://baike.c114.net/view.asp?钱天白" target=_blank><u><font color=#0000ff>钱天白</font></u></a>教授发出了我国第一封电子邮件，此为中国人使用因特网之始。 <br><br>1987年11月，广州开通了我国第一个<a href="http://baike.c114.net/view.asp?移动电话局" target=_blank><u><font color=#0000ff>移动电话局</font></u></a>，首批用户有700个。-我国第一个160人工信息台在上海投入使用。<br><br>1988年，第一个实用单模光纤通信系统（34Kb／s）在扬州、高邮之间开通，全长为75公里。 <br><br>1988年3月27日，我国分别发射了实用通信卫星。 <br><br>1988年5月9日，北京、波恩国际<a href="http://baike.c114.net/view.asp?卫星数字式电视会议系统" target=_blank><u><font color=#0000ff>卫星数字式电视会议系统</font></u></a>试通。 <br><br>1989年，第一条1920路（140Mb／s）单模长途干线在合肥、芜湖间建成开通 <br><br>1989年5月，我国的第一个公用分组交换网通过鉴定，并于11月正式投产使用。1989年6月，广东省珠江三角洲首先实现了移动电话自动<a href="http://baike.c114.net/view.asp?漫游" target=_blank><u><font color=#0000ff>漫游</font></u></a>。 <br><br><br>1990年7月，上海引进美国<a href="http://baike.c114.net/view.asp?摩托罗拉" target=_blank><u><font color=#0000ff>摩托罗拉</font></u></a>公司的800MC集群调度移动通信系统。140Mb/s数字微波通信系统研制成功。 <br><br>1991年,一万门程控数字市内电话交换机通过鉴定。1920路（6GHz）大容量数字微波通信系统和一点对多点微波通信设备通过鉴定。 <br><br>1991年3月,第一个<a href="http://baike.c114.net/view.asp?ISDN" target=_blank><u><font color=#0000ff>ISDN</font></u></a>（综合业务数字网）的模型网在北京完成联网试验，并于通过了技术鉴定。622Mb／s光纤通信数字复用设备（五次群复用设备）研制成功，3月通过了技术鉴定。 <br><br>1991年11月15日，上海首先在150MHz频段上开通汉字<a href="http://baike.c114.net/view.asp?寻呼系统" target=_blank><u><font color=#0000ff>寻呼系统</font></u></a>。 <br><br>1992年7月,我国第一个168自动声讯台在广东省南海开通。 <br><br>1993年9月19日,我国第一个<a href="http://baike.c114.net/view.asp?数字移动电话" target=_blank><u><font color=#0000ff>数字移动电话</font></u></a>通信网于在浙江省嘉兴市首先开通 <br><br>1994年10月，我国第一个省级数字移动通信网在广东省开通，容量为5万门。 <br><br>1998年5月15日，北京电信长城<a href="http://baike.c114.net/view.asp?CDMA" target=_blank><u><font color=#0000ff>CDMA</font></u></a>网商用试验网--<a href="http://baike.c114.net/view.asp?133网" target=_blank><u><font color=#0000ff>133网</font></u></a>，在北京、上海、广州、西安投入试验。 <br><br>1999年1月14日，我国第一条开通在国家一级干线上的，传输速率为8&#215;2.5Gb／s的<a href="http://baike.c114.net/view.asp?密集波分复用" target=_blank><u><font color=#0000ff>密集波分复用</font></u></a>（<a href="http://baike.c114.net/view.asp?DWDM" target=_blank><u><font color=#0000ff>DWDM</font></u></a>）系统通过了信息产业部鉴定，使原来光纤的通信容量扩大了8倍。<br><br>转自：&#8220;<a href="http://baike.c114.net/view.asp?id=9583-6DA001DB&amp;word">http://baike.c114.net/view.asp?id=9583-6DA001DB&amp;word</a>=通信&#8221;
<img src ="http://www.cppblog.com/xiaoyu0720/aggbug/127758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xiaoyu0720/" target="_blank">编码者-thinker</a> 2010-09-26 15:18 <a href="http://www.cppblog.com/xiaoyu0720/archive/2010/09/26/127758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个关于凯撒编码与解码的C程序源码  有意见多多提，</title><link>http://www.cppblog.com/xiaoyu0720/archive/2010/01/15/105762.html</link><dc:creator>编码者-thinker</dc:creator><author>编码者-thinker</author><pubDate>Fri, 15 Jan 2010 09:01:00 GMT</pubDate><guid>http://www.cppblog.com/xiaoyu0720/archive/2010/01/15/105762.html</guid><wfw:comment>http://www.cppblog.com/xiaoyu0720/comments/105762.html</wfw:comment><comments>http://www.cppblog.com/xiaoyu0720/archive/2010/01/15/105762.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xiaoyu0720/comments/commentRss/105762.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xiaoyu0720/services/trackbacks/105762.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080">&nbsp;1</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #008000">//</span><span style="COLOR: #008000">凯撒加密算法就是将D设置为3时的加密方法。下面是用C实现的加密模块。</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img id=Codehighlighter1_38_112_Open_Image onclick="this.style.display='none'; Codehighlighter1_38_112_Open_Text.style.display='none'; Codehighlighter1_38_112_Closed_Image.style.display='inline'; Codehighlighter1_38_112_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_38_112_Closed_Image onclick="this.style.display='none'; Codehighlighter1_38_112_Closed_Text.style.display='none'; Codehighlighter1_38_112_Open_Image.style.display='inline'; Codehighlighter1_38_112_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_38_112_Closed_Text>/**/</span><span id=Codehighlighter1_38_112_Open_Text><span style="COLOR: #808080">////////////////////////////////////////////////////////////////////////</span><span style="COLOR: #008000">//</span><span style="COLOR: #808080"></span></span><br><span style="COLOR: #008080">&nbsp;4</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #008000">//</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">凯撒加密算法基本原理<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">参数：<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;D&nbsp;&nbsp;&nbsp;:&nbsp;移位数<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;data&nbsp;:&nbsp;原始数据<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;result&nbsp;:&nbsp;返回结果<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;len&nbsp;&nbsp;&nbsp;:&nbsp;原始数据长度<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img id=Codehighlighter1_257_454_Open_Image onclick="this.style.display='none'; Codehighlighter1_257_454_Open_Text.style.display='none'; Codehighlighter1_257_454_Closed_Image.style.display='inline'; Codehighlighter1_257_454_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_257_454_Closed_Image onclick="this.style.display='none'; Codehighlighter1_257_454_Closed_Text.style.display='none'; Codehighlighter1_257_454_Open_Image.style.display='inline'; Codehighlighter1_257_454_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;func1(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;D,</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;data,</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;result,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;len)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_257_454_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_257_454_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;凯撒加密算法变形</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;len;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img id=Codehighlighter1_299_436_Open_Image onclick="this.style.display='none'; Codehighlighter1_299_436_Open_Text.style.display='none'; Codehighlighter1_299_436_Closed_Image.style.display='inline'; Codehighlighter1_299_436_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_299_436_Closed_Image onclick="this.style.display='none'; Codehighlighter1_299_436_Closed_Text.style.display='none'; Codehighlighter1_299_436_Open_Image.style.display='inline'; Codehighlighter1_299_436_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_299_436_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_299_436_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;val&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(data[i]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">D);<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(val&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img id=Codehighlighter1_353_383_Open_Image onclick="this.style.display='none'; Codehighlighter1_353_383_Open_Text.style.display='none'; Codehighlighter1_353_383_Closed_Image.style.display='inline'; Codehighlighter1_353_383_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_353_383_Closed_Image onclick="this.style.display='none'; Codehighlighter1_353_383_Closed_Text.style.display='none'; Codehighlighter1_353_383_Open_Image.style.display='inline'; Codehighlighter1_353_383_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_353_383_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_353_383_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;val&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)(val</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">cout&nbsp;&lt;&lt;&nbsp;(char)val&nbsp;;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">22</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;result[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">)val;<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">cout&nbsp;&lt;&lt;&nbsp;endl;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">25</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img id=Codehighlighter1_457_531_Open_Image onclick="this.style.display='none'; Codehighlighter1_457_531_Open_Text.style.display='none'; Codehighlighter1_457_531_Closed_Image.style.display='inline'; Codehighlighter1_457_531_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_457_531_Closed_Image onclick="this.style.display='none'; Codehighlighter1_457_531_Closed_Text.style.display='none'; Codehighlighter1_457_531_Open_Image.style.display='inline'; Codehighlighter1_457_531_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_457_531_Closed_Text>/**/</span><span id=Codehighlighter1_457_531_Open_Text><span style="COLOR: #808080">////////////////////////////////////////////////////////////////////////</span><span style="COLOR: #008000">//</span><span style="COLOR: #808080"></span></span><br><span style="COLOR: #008080">28</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #008000">//</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">29</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">凯撒解密算法基本原理<br></span><span style="COLOR: #008080">30</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">参数：<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;D&nbsp;&nbsp;&nbsp;:&nbsp;回移位数<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;data&nbsp;:&nbsp;编码后数据<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;result&nbsp;:&nbsp;原始数据<br></span><span style="COLOR: #008080">34</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;len&nbsp;&nbsp;&nbsp;:&nbsp;数据长度<br></span><span style="COLOR: #008080">35</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//<br></span><span style="COLOR: #008080">36</span><span style="COLOR: #008000"><img id=Codehighlighter1_676_977_Open_Image onclick="this.style.display='none'; Codehighlighter1_676_977_Open_Text.style.display='none'; Codehighlighter1_676_977_Closed_Image.style.display='inline'; Codehighlighter1_676_977_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_676_977_Closed_Image onclick="this.style.display='none'; Codehighlighter1_676_977_Closed_Text.style.display='none'; Codehighlighter1_676_977_Open_Image.style.display='inline'; Codehighlighter1_676_977_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;func2(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;D,</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;data,</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;result,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;len)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_676_977_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_676_977_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;凯撒加密算法变形</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">38</span><span style="COLOR: #008000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;len;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img id=Codehighlighter1_718_975_Open_Image onclick="this.style.display='none'; Codehighlighter1_718_975_Open_Text.style.display='none'; Codehighlighter1_718_975_Closed_Image.style.display='inline'; Codehighlighter1_718_975_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_718_975_Closed_Image onclick="this.style.display='none'; Codehighlighter1_718_975_Closed_Text.style.display='none'; Codehighlighter1_718_975_Open_Image.style.display='inline'; Codehighlighter1_718_975_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_718_975_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_718_975_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(data[i]&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;data[i]&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img id=Codehighlighter1_762_806_Open_Image onclick="this.style.display='none'; Codehighlighter1_762_806_Open_Text.style.display='none'; Codehighlighter1_762_806_Closed_Image.style.display='inline'; Codehighlighter1_762_806_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_762_806_Closed_Image onclick="this.style.display='none'; Codehighlighter1_762_806_Closed_Text.style.display='none'; Codehighlighter1_762_806_Open_Image.style.display='inline'; Codehighlighter1_762_806_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_762_806_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_762_806_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;result[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;data[i];<br></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(data[i]&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;data[i]&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">E</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img id=Codehighlighter1_852_926_Open_Image onclick="this.style.display='none'; Codehighlighter1_852_926_Open_Text.style.display='none'; Codehighlighter1_852_926_Closed_Image.style.display='inline'; Codehighlighter1_852_926_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_852_926_Closed_Image onclick="this.style.display='none'; Codehighlighter1_852_926_Closed_Text.style.display='none'; Codehighlighter1_852_926_Open_Image.style.display='inline'; Codehighlighter1_852_926_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_852_926_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_852_926_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;val&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">(data[i]&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">V</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;result[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">)val;<br></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img id=Codehighlighter1_931_973_Open_Image onclick="this.style.display='none'; Codehighlighter1_931_973_Open_Text.style.display='none'; Codehighlighter1_931_973_Closed_Image.style.display='inline'; Codehighlighter1_931_973_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_931_973_Closed_Image onclick="this.style.display='none'; Codehighlighter1_931_973_Closed_Text.style.display='none'; Codehighlighter1_931_973_Open_Image.style.display='inline'; Codehighlighter1_931_973_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #0000ff">else</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_931_973_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_931_973_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;result[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">)(data[i]&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;D);<br></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">52</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<img src ="http://www.cppblog.com/xiaoyu0720/aggbug/105762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xiaoyu0720/" target="_blank">编码者-thinker</a> 2010-01-15 17:01 <a href="http://www.cppblog.com/xiaoyu0720/archive/2010/01/15/105762.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面试题中的细节，你注意过么？</title><link>http://www.cppblog.com/xiaoyu0720/archive/2009/12/09/102849.html</link><dc:creator>编码者-thinker</dc:creator><author>编码者-thinker</author><pubDate>Wed, 09 Dec 2009 07:13:00 GMT</pubDate><guid>http://www.cppblog.com/xiaoyu0720/archive/2009/12/09/102849.html</guid><wfw:comment>http://www.cppblog.com/xiaoyu0720/comments/102849.html</wfw:comment><comments>http://www.cppblog.com/xiaoyu0720/archive/2009/12/09/102849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xiaoyu0720/comments/commentRss/102849.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xiaoyu0720/services/trackbacks/102849.html</trackback:ping><description><![CDATA[见过下面的这段代码吗？<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">unsigned&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;A[</span><span style="COLOR: #000000">255</span><span style="COLOR: #000000">],k;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;UCHAR_MAX&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;k&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;k&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">255</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_77_92_Open_Image onclick="this.style.display='none'; Codehighlighter1_77_92_Open_Text.style.display='none'; Codehighlighter1_77_92_Closed_Image.style.display='inline'; Codehighlighter1_77_92_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_77_92_Closed_Image onclick="this.style.display='none'; Codehighlighter1_77_92_Closed_Text.style.display='none'; Codehighlighter1_77_92_Open_Image.style.display='inline'; Codehighlighter1_77_92_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_77_92_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_77_92_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;A[k]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;k;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(k&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;k&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">254</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_118_145_Open_Image onclick="this.style.display='none'; Codehighlighter1_118_145_Open_Text.style.display='none'; Codehighlighter1_118_145_Closed_Image.style.display='inline'; Codehighlighter1_118_145_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_118_145_Closed_Image onclick="this.style.display='none'; Codehighlighter1_118_145_Closed_Text.style.display='none'; Codehighlighter1_118_145_Open_Image.style.display='inline'; Codehighlighter1_118_145_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_118_145_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_118_145_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;A[k]&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
运行结果会是死循环的！！！<br>想过为什么吗？<br>k是unsigned char 类型的变量，就是说它是一个字节大小，值域范围是[0-255]，<br>当k循环到255后还要加1，结果k的值变成了0了(相信学过计算机系统结构的都知道为什么)，<br>所以相当于没有结束条件而无限制的死循环了。
<img src ="http://www.cppblog.com/xiaoyu0720/aggbug/102849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xiaoyu0720/" target="_blank">编码者-thinker</a> 2009-12-09 15:13 <a href="http://www.cppblog.com/xiaoyu0720/archive/2009/12/09/102849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>