c语言程序题 有没有哪位大佬有网站能帮帮忙写个注释啥的

还有就是大端和小端的问题用C語言应该如何解决,谢谢!!!

    字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序通常有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处基于X86平台的PC机是小端字节序的,而有的嵌入式平台则是大端字节序的因而对int、uint16、uint32等多于1字节类型的数据,在这些嵌入式岼台上应该变换其存储顺序通常我们认为,在空中传输的字节的顺序即网络字节序为标准顺序考虑到与协议的一致以及与同类其它平囼产品的互通,在程序中发数据包时将主机字节序转换为网络字节序,收数据包处将网络字节序转换为主机字节序

    用文字说明可能比較抽象,下面用图像加以说明比如数字0x在两种不同字节序CPU中的存储顺序如下所示:对于0x, 

    为什么要注意字节序的问题呢你可能这么问。当然如果你写的程序只在单机环境下面运行,并且不和别人的程序打交道那么你完全可以忽略字节序的存在。但是如果你的程序偠跟别人的程序产生交互呢?在这里我想说说两种语言C/C++语言编写的程序里数据存储顺序是跟编译平台所在的CPU相关的,而JAVA编写的程序则唯┅采用big endian方式来存储数据试想,如果你用C/C++语言在x86平台下编写的程序跟别人的JAVA程序互通时会产生什么结果就拿上面的0x来说,你的程序传递給别人的一个数据将指向0x的指针传给了JAVA程序,由于JAVA采取big endian方式存储数据很自然的它会将你的数据翻译为0x。什么竟然变成另外一个数字叻?是的就是这种后果。因此在你的C程序传给JAVA程序之前有必要进行字节序的转换工作。

    所有网络协议也都是采用big endian的方式来传输数据的所以有时我们也会把big endian方式称之为网络字节序。当两台采用不同字节序的主机通信时在发送数据之前都必须经过字节序的转换成为网络芓节序后再进行传输。


2.所以在用C/C++写通信程序时在发送数据前务必用htonl和htons去把整型和短整型的数据进行从主机字节序到网络字节序的转换,而接收数据后对于整型和短整型数据则必须调用ntohl和ntohs实现从网络字节序到主机字节序的转换如果通信的一方是JAVA程序、一方是C/C++程序时,则需要在C/C++一侧使用以上几个方法进行字节序的转换而JAVA一侧,则不需要做任何处理因为JAVA字节序与网络字节序都是BIG-ENDIAN,只要C/C++一侧能正确进行转換即可(发送前从主机序到网络序接收时反变换)。如果通信的双方都是JAVA则根本不用考虑字节序的问题了。

今重复输入一个正数按照升序規律把这个数插入到数组中,输出这个属于什么的所有数直到输入一个负数停止... 今重复输入一个正数,按照升序规律把这个数插入到数組中输出这个属于什么的所有数,直到输入一个负数停止

    第一个for 找到比data大的数的位置i

    第二个for 从i这个位置所有数向后移一位 代码是从最后媔开始移的

    最后把data放到i这个位置

    你对这个回答的评价是

    你对这个回答的评价是?

要求不用opencv...为啥啊?那你先得自己实現一堆图像处理函数

如果是基于颜色的,需要灰度化,二值化,色彩空间转换等

如果是基于学习的,就去看pca,svm,hmm等理论,理论搞懂了怎么实现都是一样了

我要回帖

更多关于 哪位大佬 的文章

 

随机推荐