好的,所以我知道104的二进制等价值是1101000.
10 = 1010
4 = 0100
所以,104 = 1101000(如何得到这些?这两者如何混合在一起得到这个二进制文件?)
从这里的例子来看......
来自"hellohello"的八位字节是E8 32 9B FD 46 97 D9 EC 37.
This bit is inserted to the left which yields 1 + 1101000 = 11101000 ("E8").
我仍然明白这一部分,但如何将11101000转换为E8?
我对所有这些菜鸟问题感到抱歉,我昨天才学会它,我用Google搜索并搜索了一整天,但仍然没有真正理解这个概念......
谢谢.
好的,所以我知道104的二进制等价值是1101000.
10 = 1010
4 = 0100
你不能掰开了许多像104成10和4当改变基地.您需要查看整个数字104.从位位表及其十进制等值开始:
1 1
2 10
4 100
8 1000
16 10000
32 100000
64 1000000
128 10000000
Run Code Online (Sandbox Code Playgroud)
查找仍然小于您的input数字的最大十进制数:104- 它是64.写下来:
1000000
Run Code Online (Sandbox Code Playgroud)
减去64来自104:104-64=40.用40(32在这种情况下)重复表查找,并在第一个下面写下相应的位模式 - 对齐最右边的最低位:
1000000
100000
Run Code Online (Sandbox Code Playgroud)
重复40-32=8:
1000000
100000
1000
Run Code Online (Sandbox Code Playgroud)
由于之后没有遗留任何东西8,你就完蛋了.总结这三个数字:
1101000
Run Code Online (Sandbox Code Playgroud)
这是二进制代表104.
要转换1101000为十六进制,我们可以使用一个小技巧,非常类似于您尝试使用,10并且4从二进制版本构建十六进制版本而不需要太多工作 - 一次查看四位组.这个技巧有效,因为四位基本2表示完全代表了基本16表示的选项范围:
Bin Dec Hex
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 10 A
1011 11 B
1100 12 C
1101 13 D
1110 14 E
1111 15 F
Run Code Online (Sandbox Code Playgroud)
第一组四位(插入足以导致0将其填充为四位)0110为6十进制,6十六进制; 第二组四位,1000是
8十进制,8十六进制,所以0x68是十六进制表示104.