在文本文件中十六进制是如何存储的

yannixinxiang 2009-01-14 11:16:38
我要传输一个密钥,可是这个密钥在文本文件中,我需要知道,我这个密钥在文本文件中如何写。。
比如密钥为123,请问该怎么写。。
...全文
316 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
mssou 2011-11-05
  • 打赏
  • 举报
回复
为了我为了一个加密压缩,搞了几天,不过终于解决了。呵呵
qiang81020 2009-01-15
  • 打赏
  • 举报
回复
eg:
unsigned char key[8] = {0x00, 0x12, 0x34, 0x56, 0x79, 0x90, 0xab, 0xcd};
||
||
文件中可视:
char key1[16] = "001234567890abcd";

key1[0] = (key[0] >> 4) & 0x0f + 0x30;
key1[1] = key[0] & 0x0f + 0x30;

只列举了0~9的情况.实现中做一个数组,将0x00~0x0F与'0'~'F'对应进行处理.

ForestDB 2009-01-15
  • 打赏
  • 举报
回复
如果x86的平台,int i = 1; fwrite(&i, sizeof(i), 1, pFile);存到文件就是0x01, 0x00, 0x00, 0x00(大小端)
ForestDB 2009-01-15
  • 打赏
  • 举报
回复
晕,存成文件都是2进制,为了方便交流才有16进制(不然你说0000 0001B多累,0x01就好)。
如果是int i = 1; fwrite(&i, sizeof(i), 1, pFile);存到文件就是0x00, 0x00, 0x00, 0x01
而fprintf(pFile, "%d", i);存到文件就是0x31
如果是char i = '1'; fwrite(&i, sizeof(i), 1, pFile);存到文件就是0x31
而frpintf(pFile, "%c", i);存到文件还是0x31
LZ先揣摩下,再想想到底要什么,再发问吧。
yannixinxiang 2009-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 submarine2007 的回复:]
123是数字还是文本呢?
[/Quote]
123是十六进制的数 ,是文本表示。。
yannixinxiang 2009-01-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaoyisnail 的回复:]
是这个意思吗?

C/C++ code
#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE* fp = fopen("out.txt", "w");
if(!fp)
{
printf("error\n");
exit(1);
}
fprintf(fp, "%x\n", 123);
return 0;
}
[/Quote]

谢谢,我现在是对进制的表示方式不懂,不是读文本文件出问题
lbh2001 2009-01-14
  • 打赏
  • 举报
回复
以文本方式写入即可

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char str[] = "123abc";
FILE *fp = fopen("123.txt", "w+");
if (!fp)
{
printf("Open File Error!\n");
exit(-1);
}
/*wrtie into file*/
fwrite(str, strlen(str), 1, fp);
fclose(fp);
return 0;
}
yannixinxiang 2009-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 submarine2007 的回复:]
123是数字还是文本呢?

照你说的“别人能看的懂, 会操作”, 我理解这是文本, 那么, 关16进制啥事呢?
[/Quote]我要存放的是16进制的数据啊
xiaoyisnail 2009-01-14
  • 打赏
  • 举报
回复
是这个意思吗?

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE* fp = fopen("out.txt", "w");
if(!fp)
{
printf("error\n");
exit(1);
}
fprintf(fp, "%x\n", 123);
return 0;
}
submarine2007 2009-01-14
  • 打赏
  • 举报
回复
123是数字还是文本呢?

照你说的“别人能看的懂, 会操作”, 我理解这是文本, 那么, 关16进制啥事呢?
yannixinxiang 2009-01-14
  • 打赏
  • 举报
回复
是应该用0X31 0x32 0x33h还是31 32 33 还是直接就是123
yannixinxiang 2009-01-14
  • 打赏
  • 举报
回复
我现在就是要明文的。。。这样话,别人能看的懂,会操作。。
lbh2001 2009-01-14
  • 打赏
  • 举报
回复
加密后再写入吧,明文是没有作用的,即使是用二进制写入
yannixinxiang 2009-01-14
  • 打赏
  • 举报
回复
不过还是谢谢楼上的,到时候我们是要做一定的转换的
yannixinxiang 2009-01-14
  • 打赏
  • 举报
回复
我不是要写代码,我现在就是要在文本中放数据,以十六进制的方式放,我现在不明白的地方就是我该怎么放他。。十六进制不是有很多表示方式啊
submarine2007 2009-01-14
  • 打赏
  • 举报
回复
有点明白你的意思了,

比如: int i = 0x1f; 写到文件中后是文本“0x1f"; 自己写个函数做数字到字符串的转换就好了

char num[32];
char *p = &num[31];
*p = '\0';
p--;
int i = 0x1f; // 写几进制的都没关系
int n;

while(i)
{
n = i % 16;
*p = n < 10 ? ('0'+n) : (n - 10 + 'A');
p--;
i /= 16;
}

*p = 'x';
p--;
*p = '0';

010 Editor v9.01 注册机 ============== 010 Editor是一款专业的文本编辑器和十六进制编辑器,它可以编辑文本文件,包括 Unicode 文件、批处理文件、C/C++、XML 等,功能全面且强大,可以说是目前最强大的十六进制编辑器了。  * 查看并编辑在你硬盘驱动器上(文件大小无限制)的任何二进制文件和文本文件,包括 Unicode 文件、C/C++、XML、PHP,等。   * 独特的二进制模板技术允许你了解任何二进制文件格式。   * 查找并修复硬盘驱动器、软驱、内存密钥、闪存驱动器、CD-ROM、进程等的问题。   * 用强大的工具包括查找、替换、在多文件查找、在多文件替换、二进制比较、校验和/散列算法、直方图等,来分析和编辑文本和二进制数据。   * 强大的脚本引擎允许多任务的自动化(语言非常类似于 C)。   * 轻松下载并安装其他使用 010 Editor 储存库共享的二进制模板和脚本。   * 以不同的格式导入和导出二进制数据。   内置在 010 Editor 十六进制编辑器可以立即加载任意大小的文件,并且对所有编辑操作都可以无限制地撤消和重做。编辑器甚至可以立即在文件之间复制或粘贴大量的数据块。010 Editor 的可移植版本也可用于 Windows 从 USB 键运行 010 Editor。试用了 010 Editor 后,我们相信你会同意 010 Editor 是今天最强大的十六进制编辑器!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧