user-0 提问: 两个十六进制交叉合并成一个十六进制数

回复:
user: user-1
content: 引用 9 楼 SXJIAKE 的回复:夹杂了中文括号左半边，一个中文逗号……  牛B，喜欢你这种爱实践的，加油！

user: user-1
content: 引用 12 楼 zhao4zhong1 的回复:连例子都实现不了，何谈算法呢？ TDD  VC里不需要<inttypes.h> 还要把uint64_t  改成 _int64 输出时候要弄成printf(" %I64x \n",num);  #include "stdafx.h" #include <stdio.h>   _int64  MLGB(long x1,long x2) {     long n1=x1;     long n2=x2;       char ch[8];     char *c1=(char *)&n1;     char *c2=(char *)&n2;       ch[0]=*(c2+0);     ch[1]=*(c1+0);     ch[2]=*(c2+1);     ch[3]=*(c1+1);     ch[4]=*(c2+2);     ch[5]=*(c1+2);     ch[6]=*(c2+3);     ch[7]=*(c1+3);       return  *(_int64 *)ch;   }   int main(int argc, char *argv[]) {     _int64  num;     num=MLGB(0x12345678,0xabcdef90);     printf("%I64x\n", num);       return 0; }

user: user-2
content: 引用 11 楼 gz_qmc 的回复:[quote=引用 10 楼 linjiagao052 的回复:] [quote=引用 7 楼 zhao4zhong1 的回复:] 楼上没有一个能达到楼主要求的。 因为十六进制中没有gh [/quote]  都这么聪明，怎么没看到”例如“两个字呢？难道智商高的人视力都不太好？[/quote] 连例子都实现不了，何谈算法呢？ TDD

user: user-3
content: 引用 7 楼 zhao4zhong1 的回复:楼上没有一个能达到楼主要求的。 因为十六进制中没有gh这个好

user: user-2
content: 楼上没有一个能达到楼主要求的。 因为十六进制中没有gh

user: user-1
content: 引用 10 楼 linjiagao052 的回复:[quote=引用 7 楼 zhao4zhong1 的回复:] 楼上没有一个能达到楼主要求的。 因为十六进制中没有gh [/quote]  都这么聪明，怎么没看到”例如“两个字呢？难道智商高的人视力都不太好？

user: user-4
content: 引用 7 楼 zhao4zhong1 的回复:楼上没有一个能达到楼主要求的。 因为十六进制中没有gh

user: user-5
content: 引用 2 楼 gz_qmc 的回复:#include <stdio.h> #include <inttypes.h>  uint64_t  MLGB(long x1,long x2) {     long n1=x1; 	long n2=x2;  	char ch[8]; 	char *c1=(char *)&n1; 	char *c2=(char *)&n2;  	ch[0]=*(c2+0); 	ch[1]=*(c1+0); 	ch[2]=*(c2+1); 	ch[3]=*(c1+1); 	ch[4]=*(c2+2); 	ch[5]=*(c1+2); 	ch[6]=*(c2+3); 	ch[7]=*(c1+3);  	return  *(uint64_t *)ch;  }  int main(int argc, char *argv[]) {     uint64_t  num;     num=MLGB（0x12345678，0xabcdef90);     printf("%" PRIx64 "\n", num);      return 0; }夹杂了中文括号左半边，一个中文逗号……

user: user-6
content: using ull =unsigned long long;     unsigned int a[]={ 0x12345678, 0xabcdefaa },msk=0xff<<24;     ull c=0;     #define lsh(v,m,b) ((ull)(v&m)<<b)     for(int i=0;i<4;i++,msk>>=8){         c |=lsh(a[0],msk,32-i*8)|lsh(a[1],msk,24-i*8);     }

user: user-0
content: 测试通过，谢谢。

user: user-1
content: #include <stdio.h> #include <inttypes.h>  uint64_t  MLGB(long x1,long x2) {     long n1=x1; 	long n2=x2;  	char ch[8]; 	char *c1=(char *)&n1; 	char *c2=(char *)&n2;  	ch[0]=*(c2+0); 	ch[1]=*(c1+0); 	ch[2]=*(c2+1); 	ch[3]=*(c1+1); 	ch[4]=*(c2+2); 	ch[5]=*(c1+2); 	ch[6]=*(c2+3); 	ch[7]=*(c1+3);  	return  *(uint64_t *)ch;  }  int   main(int argc, char *argv[]) {       uint64_t  num;       num=MLGB（0x12345678，0xabcdef90);       printf("%" PRIx64 "\n", num);       return 0; }

user: user-1
content: 引用 5 楼 user-8 的回复:函数名起的很霸气  嗯，总算有个识货的

user: user-7
content: 移位，与，或  #include <stdio.h> #include <inttypes.h>  int main(int argc, char *argv[]) {     int i;     uint32_t n1, n2;     uint64_t n3;      n1 = 0x12345678;     n2 = 0xabcdef90;     n3 = 0;     for (i = 0; i < 4; i++) {         n3 |= (((uint64_t)n1 >> (i * 8)) & 0xFF) << ((2 * i + 1) * 8);         n3 |= (((uint64_t)n2 >> (i * 8)) & 0xFF) << ((2 * i + 0) * 8);     }      printf("%" PRIx64 "\n", n3);      return 0; } /* output: 12ab34cd56ef7890 */

user: user-8
content: 引用 2 楼 gz_qmc 的回复:#include <stdio.h> #include <inttypes.h>  uint64_t  MLGB(long x1,long x2) {     long n1=x1; 	long n2=x2;  	char ch[8]; 	char *c1=(char *)&n1; 	char *c2=(char *)&n2;  	ch[0]=*(c2+0); 	ch[1]=*(c1+0); 	ch[2]=*(c2+1); 	ch[3]=*(c1+1); 	ch[4]=*(c2+2); 	ch[5]=*(c1+2); 	ch[6]=*(c2+3); 	ch[7]=*(c1+3);  	return  *(uint64_t *)ch;  }  int   main(int argc, char *argv[]) {       uint64_t  num;       num=MLGB（0x12345678，0xabcdef90);       printf("%" PRIx64 "\n", num);       return 0; } 函数名起的很霸气