C++文件读取的问题
高洛峰
高洛峰 2016-11-01 09:47:09
0
1
620

在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


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

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]
...


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板