user-0 提问: 如何将两个8位数拼接成一个16位的数

回复:
user: user-1
content: get it

user: user-2
content: 引用 21 楼 zhao4zhong1 的回复:[quote=引用 14 楼 sholber 的回复:] 据我所知，没有任何一个国际标准正式地定义一个字节的比特数，我想，这已经足够说明问题了。 据我所知，没有任何一个国际标准正式地定义一个人的手脚甚至脑袋数，我想，这已经足够说明问题了。  [/quote]  正因为如此，在用C解决和手有关的问题时，需要考虑有的人是6指。如果不考虑，就会出现问题。做为一个程序爱好者，你认为你在做这个项目时，不考虑有的人是6指或者7指？我不信。

user: user-3
content: 引用 14 楼 sholber 的回复:据我所知，没有任何一个国际标准正式地定义一个字节的比特数，我想，这已经足够说明问题了。 据我所知，没有任何一个国际标准正式地定义一个人的手脚甚至脑袋数，我想，这已经足够说明问题了。

user: user-2
content: 引用 30 楼 zhao4zhong1 的回复:[quote=引用 29 楼 sholber 的回复:] [quote=引用 27 楼 zhao4zhong1 的回复:] [quote=引用 22 楼 sholber 的回复:] [quote=引用 21 楼 zhao4zhong1 的回复:] [quote=引用 14 楼 sholber 的回复:] 据我所知，没有任何一个国际标准正式地定义一个字节的比特数，我想，这已经足够说明问题了。 据我所知，没有任何一个国际标准正式地定义一个人的手脚甚至脑袋数，我想，这已经足够说明问题了。  [/quote]  正因为如此，在用C解决和手有关的问题时，需要考虑有的人是6指。如果不考虑，就会出现问题。做为一个程序爱好者，你认为你在做这个项目时，不考虑有的人是6指或者7指？我不信。[/quote] 我真的从来没考虑过。[/quote]  眼看已经将赵老师逼到墙角，赵老师就地一滚，撒起泼来。 嘎嘎~~[/quote] 跟我比谁脸皮厚？！你找错对象了。 过去叫“厚颜无耻”；现在叫“心理素质过硬”！ [/quote]  赵老湿是哪里人？我回家要是路过的话，一定找你把酒言欢，共论天下大事！ PS： 自打我来CSDN之后，字里行间，就知道赵老湿是个宽厚的人，心想日后必能成为朋友。只是没想到把酒言欢的事是我先提出来，谁脸皮厚？

user: user-3
content: 引用 29 楼 sholber 的回复:[quote=引用 27 楼 zhao4zhong1 的回复:] [quote=引用 22 楼 sholber 的回复:] [quote=引用 21 楼 zhao4zhong1 的回复:] [quote=引用 14 楼 sholber 的回复:] 据我所知，没有任何一个国际标准正式地定义一个字节的比特数，我想，这已经足够说明问题了。 据我所知，没有任何一个国际标准正式地定义一个人的手脚甚至脑袋数，我想，这已经足够说明问题了。  [/quote]  正因为如此，在用C解决和手有关的问题时，需要考虑有的人是6指。如果不考虑，就会出现问题。做为一个程序爱好者，你认为你在做这个项目时，不考虑有的人是6指或者7指？我不信。[/quote] 我真的从来没考虑过。[/quote]  眼看已经将赵老师逼到墙角，赵老师就地一滚，撒起泼来。 嘎嘎~~[/quote] 跟我比谁脸皮厚？！你找错对象了。 过去叫“厚颜无耻”；现在叫“心理素质过硬”！

user: user-2
content: 引用 27 楼 zhao4zhong1 的回复:[quote=引用 22 楼 sholber 的回复:] [quote=引用 21 楼 zhao4zhong1 的回复:] [quote=引用 14 楼 sholber 的回复:] 据我所知，没有任何一个国际标准正式地定义一个字节的比特数，我想，这已经足够说明问题了。 据我所知，没有任何一个国际标准正式地定义一个人的手脚甚至脑袋数，我想，这已经足够说明问题了。  [/quote]  正因为如此，在用C解决和手有关的问题时，需要考虑有的人是6指。如果不考虑，就会出现问题。做为一个程序爱好者，你认为你在做这个项目时，不考虑有的人是6指或者7指？我不信。[/quote] 我真的从来没考虑过。[/quote]  眼看已经将赵老师逼到墙角，赵老师就地一滚，撒起泼来。 嘎嘎~~

user: user-4
content: 如果只是将两个8bit的数合并成一个16bit的数，前面的达人们给出的方法都能够实现，只是需要要注意位序的问题，我个人觉得移位然后再按位或比较好，可以避免位序出错。

user: user-3
content: 引用 22 楼 sholber 的回复:[quote=引用 21 楼 zhao4zhong1 的回复:] [quote=引用 14 楼 sholber 的回复:] 据我所知，没有任何一个国际标准正式地定义一个字节的比特数，我想，这已经足够说明问题了。 据我所知，没有任何一个国际标准正式地定义一个人的手脚甚至脑袋数，我想，这已经足够说明问题了。  [/quote]  正因为如此，在用C解决和手有关的问题时，需要考虑有的人是6指。如果不考虑，就会出现问题。做为一个程序爱好者，你认为你在做这个项目时，不考虑有的人是6指或者7指？我不信。[/quote] 我真的从来没考虑过。

user: user-5
content: 而且有些ARM 的 cpu是可以调整字节序方式的 不知道下面的对不对。。。  //just  for intel_ia32 uint16_t Compose(uint8_t hi,uint8_t lo) {         register uint16_t reval = hi;         return (reval<<8) | lo;  }

user: user-5
content: 没有说明字节序，这个要依赖于CPU  最好写个ARCH相关的函数  在不同框架中对该函数进行改写

user: user-0
content: 一般的电脑表示都是八位，九位甚至更多一般都是在硬件的吧

user: user-0
content: 我只能说我现在暂时还不知道还有九位这中说法。

user: user-2
content: 楼主太笼统。 1，怎么拼接？9和9拼接，结果是18呢，还是99，没说； 2，原来的两个8位数是有符号呢，还是没有符号？没说； 3，放不下怎么办？没说。

user: user-2
content: 引用 18 楼 worldy 的回复:[quote=引用 13 楼 sholber 的回复:]  我会说某ID见识短，孤陋寡闻吗？ 即使全世界只有一台这样的计算机，而且拥有C的实现，你就说一字节是八位，也是极不负责任的胡说。这些家伙幸亏不是WG14的成员。这种认识比无知更恶劣。因为少，就可以视而不见吗？我只能说，x86和Windows蒙蔽了你的双眼。 C标准相比于其它语言标准，可以说，是唯一一个没有被实现绑架的。 字符编码里有个术语叫“八位元”，如果按你们的想法，干脆叫字节好了－－－还真有人这么干。  或许这位老兄能举例说出一个不是8位一字节的芯片？[/quote]  尽管绝大多数计算机CHAR_BIT == 8，但仍然有些架构是例外的： http://computer-programming-forum.com/47-c-language/d1a610bbac942565.htm  PS: C99 says that CHAR_BIT must be at least 8; POSIX says it must be exactly 8; on Windows it's 8. That's about all the platforms it's worth caring about.  There was a port of gcc for PDP-10 where CHAR_BIT=9: http://pdp10.nocrew.org/gcc/download/gcc-pdp10-20020611.tar.bz2

user: user-6
content: 引用 13 楼 sholber 的回复:我会说某ID见识短，孤陋寡闻吗？ 即使全世界只有一台这样的计算机，而且拥有C的实现，你就说一字节是八位，也是极不负责任的胡说。这些家伙幸亏不是WG14的成员。这种认识比无知更恶劣。因为少，就可以视而不见吗？我只能说，x86和Windows蒙蔽了你的双眼。 C标准相比于其它语言标准，可以说，是唯一一个没有被实现绑架的。 字符编码里有个术语叫“八位元”，如果按你们的想法，干脆叫字节好了－－－还真有人这么干。  或许这位老兄能举例说出一个不是8位一字节的芯片？

user: user-6
content: union aType{ unsigned char a[2]; short int b; }  aType a;  a.a[0]=v1;//一个值 a.a[1]=v2;  short int x=a.b; 这个应该是最有效的拼接了

user: user-7
content: 这是个极具挑战性的问题。

user: user-8
content: 支持zhao4zhong1和sholber（排名暂不分先后）

user: user-9
content: 引用 10 楼 sholber 的回复:[quote=引用 8 楼 my_live_123 的回复:] [quote=引用 5 楼 sholber 的回复:] [quote=引用 1 楼 zhao4zhong1 的回复:] unsigned char uc[2]={0x10,0xA0}; unsigned short us1,us2; unsigned char *p; p=(unsigned char *)&us1; p[0]=uc[0];p[1]=uc[1]; p=(unsigned char *)&us2; p[0]=uc[1];p[1]=uc[0]; printf("%hu(%04hx),%hu(%04hx)\n",us1,us1,us2,us2);  引用 2 楼 a30037338 的回复: unsigned char hi = 0x15; unsigned char lo = 0x51; unsigned short  i = 0; i |= hi << 8; i |= lo;   引用 3 楼 henuyx 的回复:char buf[24] snprintf(buf, 24, "%d%08d", num1, num2); 引用 4 楼 my_live_123 的回复:(a << 8) | b  楼主并没有说明他所采用的编译环境和执行环境。 所以， 我想知道， 如果他所采用的C的实现 一个字节是9位，或者更多位（有的机器可以达到18位） 该怎么办？ 不要说我钻牛角尖，也不要说没有这样的CPU架构。 我只想说， 你们错了， 这样的机器是有的。[/quote]  还有没有提供移位计算的机器呢？怎么办呢？暂时我想偷懒 留给你解决的了[/quote] 你说得不对， 不对，不对，不对啊， 不对。 字节长度不同，对于在该架构上实现C，没有任何影响，没有，没有的。没有的么。 有些计算机架构， 对于实现C语言困难重重，这是高难度计算机。也没办法， 再说， 赵4老湿曾说，没有 没有移位的计算机， 赵4老湿，你来反驳他！你来！ 来！ 嘎嘎~~[/quote]  安全起见，一般会选择与上一个位掩码  现代计算机架构应该是没有没有移位计算的机器，但是“古代”计算机就不一定喽！

user: user-9
content: 引用 5 楼 sholber 的回复:[quote=引用 1 楼 zhao4zhong1 的回复:] unsigned char uc[2]={0x10,0xA0}; unsigned short us1,us2; unsigned char *p; p=(unsigned char *)&us1; p[0]=uc[0];p[1]=uc[1]; p=(unsigned char *)&us2; p[0]=uc[1];p[1]=uc[0]; printf("%hu(%04hx),%hu(%04hx)\n",us1,us1,us2,us2);  引用 2 楼 a30037338 的回复: unsigned char hi = 0x15; unsigned char lo = 0x51; unsigned short  i = 0; i |= hi << 8; i |= lo;   引用 3 楼 henuyx 的回复:char buf[24] snprintf(buf, 24, "%d%08d", num1, num2); 引用 4 楼 my_live_123 的回复:(a << 8) | b  楼主并没有说明他所采用的编译环境和执行环境。 所以， 我想知道， 如果他所采用的C的实现 一个字节是9位，或者更多位（有的机器可以达到18位） 该怎么办？ 不要说我钻牛角尖，也不要说没有这样的CPU架构。 我只想说， 你们错了， 这样的机器是有的。[/quote]  还有没有提供移位计算的机器呢？怎么办呢？暂时我想偷懒 留给你解决的了