搜索

首页  >  问答  >  正文

C++文件读取的问题

在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


高洛峰高洛峰2950 天前625

全部回复(1)我来回复

  • 三叔

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


    回复
    0
  • 取消回复