在k.txt中放有(也只有)数据:0x0123456789abcdef
如何将该数据读入到unsigned char k[8]中?
再进一步,可不可以根据是否有0x,按照十进制/十六进制分别将64bit数据从文件中读入并存到unsigned char k[8]中?
补充一下,希望能给出代码,因为我对C++文件操作控制不熟悉。
还有就是,txt文件中放的是16进制数,我希望保存到unsigned char k[8]中的是这个16进制数对应的二进制形式所代表的值(而不是这个字符)。
举个例子,0x4142读取以后,我希望保存到char k[8]中的是字符A和字符B而不是41和42
三叔2016-11-01 09:47:22
1.验证读到的字符串,是否为16进制。直接用状态机即可,因为本来就很简单。
比如
状态1: 未开始
状态2: 接收字符串"0x"
状态3:接收字符,范围:0-9、A-F
结束后,检查一遍数字部分开头是否包含0,处理数字部分长度不等于8*2的情况。
2.去掉0x后,从右向左按2个字符串为单位间隔,进行切割。
比如
0xFA1B365A2720E564切割为
FA-1B-36-5A-27-20-E5-64
3.切割后,直接从右往左填入 k[8]。注意k[8]在定义候要进行填0的初始化,比如:
FA -> K[0]
1B -> K[1]
36 -> K[2]
...