我在考虑二进制数字方面是新手。我想知道是否有一种方法可以将2个4位数字(即十六进制编码的数字)编码为1个8位数字。因此,如果我将a
和5
用作十六进制数字,那将是10和5。也许有一种方法可以将其存储在1个8位数字中,这样您就可以得到它。从8位数字返回到其组成的4位部分。
[10, 5]! = 15
15! = [10, 5]
想知道是否有一种方法可以对数字进行编码。
这似乎是可能的,因为第一个值可以存储在前16位中,然后下一个值可以存储在其余中,使用16表示1、32表示2、2表示,3表示等,< / p>
无法确定此处的答案是怎么做:
How can i store 2 numbers in a 1 byte char?
没有真正给出我想要的东西:
> a = 10
10
> b = 5
5
> c = a + b
15
> d = (c & 0xF0) >> 4
0
> e = c & 0x0F
15
也许我不确定使用方式是否正确。看起来也可能如此,但是我不太确定如何在JavaScript中完成此操作。
How to combine 2 4-bit unsigned numbers into 1 8-bit number in C
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
我认为第一篇文章有钥匙。
使用a
和5
作为要存储的两个4位十六进制数字,您可以将它们存储在变量中,例如:
var store = 0xa5;
或动态
var store = parseInt('0x' + ('a' + '9'), 16);
然后提取零件:
var number1 = ((store & 0xF0) >> 4).toString(16)
var number2 = ((store & 0x0F)).toString(16)
我希望这会有所帮助。
答案 1 :(得分:1)
是的,大多数编程语言都支持。您必须进行按位操作。以下是Java中的示例。
编码(预先验证输入)
byte in1 = <valid input>, in2 = <valid input>;
byte out = in1<<4 | in2;
要解码:
byte in = <valid input>;
byte out1 = in>>4;
byte out2 = in & 0x0f;