Algorithm 如何将三个0-255整数编码/解码成一个数字或从一个数字中解码?

Algorithm 如何将三个0-255整数编码/解码成一个数字或从一个数字中解码?,algorithm,Algorithm,由于三个整数a、b、c的范围在0到255之间,我必须编写一个函数,将三个给定的数字存储到一个d中,另一个函数能够从第四个数字d,前三个数字中获取 有人能帮我吗?您可以使用按位移位+掩蔽来实现这一点。给定4个32位整数a、b、c和d,其中a、b和c的范围为[0..255]: d = (a << 16) | (b << 8) | (c); 你试过什么吗?d的条件是什么?这个问题与C或Java有什么关系?这有点像,如果我有三个数字12、34和56,我可以把它们放在一起,生成6

由于三个整数a、b、c的范围在0到255之间,我必须编写一个函数,将三个给定的数字存储到一个d中,另一个函数能够从第四个数字d,前三个数字中获取


有人能帮我吗?

您可以使用按位移位+掩蔽来实现这一点。给定4个32位整数a、b、c和d,其中a、b和c的范围为[0..255]:

d = (a << 16) | (b << 8) | (c);

你试过什么吗?d的条件是什么?这个问题与C或Java有什么关系?这有点像,如果我有三个数字12、34和56,我可以把它们放在一起,生成6位数字123456?希望你的数字d至少有24位或更可能有32位来容纳所有这些。你是想用C还是Java来做这件事?这个问题本身与C或Java无关,但如果涉及到代码片段,我更喜欢C/Java。d整数将是另一个0-255数字…我认为一些可逆位运算应该应用于三个初始数字,但我真的不知道。非常感谢!看来对我们中的一些人来说,这个问题已经很清楚了。@Luculus你的意思是,Keiji能够给你答案,而不像我那样问所有这些问题?也许我是想帮你找到自己的解决方案-@卢库卢斯:史蒂夫是对的,我给了你那条鱼,史蒂夫试着教你怎么抓它。您应该自己找到解决方案。这在16位系统上不起作用…:-P@alk:是否存在任何16位系统?:-无论如何,你是对的,你至少需要一个24位的系统来正确处理这些操作-P~
a = (d >> 16);
b = (d >> 8) & 255;
c = (d) & 255;