二进制(Hexa,Bin)不在Excel中

时间:2015-12-24 18:18:18

标签: excel

我目前正在做我的作业加密 SHA-1 。为了更容易,我使用Excel,因为如果我使用MS字,这将需要数天才能完成。我在Excel 2016中遇到了一些问题。

一个问题是我需要知道如何在Excel中使用Binary NOT。例如,如果我输入十六进制:

12345678

它应该将值返回到:

FFFFEDCBA987(< =因为它不是/从上面的值反转)

任何人都可以帮我找到这个公式??? (非常感谢每个细胞或1个细胞)非常感谢。

注意:如果可能的话,只需要公式,而不是VBA excel中的代码功能,因为我非常喜欢它。谢谢。

2 个答案:

答案 0 :(得分:1)

你可以使用BITXOR来做到这一点:

=BITXOR(12345678,HEX2DEC("FFFFFFFF"))

为您的位长添加更多FF。

答案 1 :(得分:0)

纯Excel公式解决方案有点复杂但可能:

enter image description here

公式:

B1中的

复制到右Q1

=RIGHT("0000"&HEX2BIN(MID($A1,COLUMNS($A:A),1)),4)

COLUMNS($A:A)将计算:1($ A:A),2($ A:B),3($ A:C),... 16($ A:P),具体取决于哪一列它是向右复制的。 因此,MID($A1,COLUMNS($A:A),1)将从A1获取一个数字,具体取决于向右复制的列。 HEX2BIN(MID($A1,COLUMNS($A:A),1))会将那个digti转换为二进制。但它不会返回前导零。因此,例如HEX2BIN("3")将是“11”而不是“0011”。 但是对于下一步,我们需要4个二进制数字。因此=RIGHT("0000"&HEX2BIN(MID($A1,COLUMNS($A:A),1)),4)会将这些前导零添加到4个二进制数字。 所以在整个公式中,A1的每个数字都是4位二进制数。

编辑:HEX2BIN有第二个参数用于给出数字计数。所以不需要RIGHT("0000"&HEX2BIN(...),4)

=HEX2BIN(MID($A1,COLUMNS($A:A),1),4)

也可以。

B2中的

复制到右Q2

=--NOT(--MID(B1,1,1))&--NOT(--MID(B1,2,1))&--NOT(--MID(B1,3,1))&--NOT(--MID(B1,4,1))

此公式将从上面的单元格中取出4位二进制数字的每个数字并取消它。 --部分(*-1*-1)是强制从字符串到数字的隐式转换所必需的。

B3中的

复制到右Q3

=BIN2HEX(B2)

A3

=B3&C3&D3&E3&F3&G3&H3&I3&J3&K3&L3&M3&N3&O3&P3&Q3

A必须格式化为Text

在此之后,您可以将行1:3向下复制到行5:7中。然后在A5中输入所需的十六进制。请注意,您必须始终输入16位数字。

从Excel 2013开始,有一个原生BITXOR功能:https://support.office.com/en-us/Article/BITXOR-function-c81306a1-03f9-4e89-85ac-b86c3cba10e4

所以Mark PM的解决方案也应该最多使用12个十六进制数字(值最多为16 ^ 12-1 = 2 ^ 48-1)。但我无法尝试,因为我没有Excel 2013。