写十六进制文件在txt

这篇博客介绍了如何在TXT文件中以十六进制格式精确地保存和显示数据。通过示例代码展示了使用`%02hhx`格式化输出确保每个数值占2个字节,并讨论了`%x`和`%X`在输出16进制数时的区别,强调了将数值转换为`unsigned char`类型的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//****××××××日期 精确到毫秒        +  R/W(读/写)+ 数据
//写入格式为2019-06-10 16:00:03:0919  R      00 FF 00 0D    80 01 00 00    08 5A DB 54
//***

以下为具体实现过程:

 

 

//.CPP
#define   WRITE_SIZE			1024
CMutex    g_clsWriteMutex(FALSE, NULL);
//.H
 CFile     file;
 CString   m_strFilePath;
 CString   strPath;
 CString    filePath;

//.CPP
CString     GetFilePath()
{
	TCHAR pFileName[MAX_PATH + 1];
    GetModuleFileName(NULL, pFileName, MAX_PATH);

	strPath = pFileName;
    filePath = strPath.Left(strPath.ReverseFind('\\'));
   return  filePath;
}

CString GetSYStime()
{
	SYSTEMTIME st = { 0 };  
	GetLocalTime(&st);  //获取当前时间 精确到ms
	CString strSysTime;
	strSysTime.Format("%d-%02d-%02d %02d:%02d:%02d:%04d",
			st.wYear,
			st.wMonth,
			st.wDay,
			st.wHour,
			st.wMinute,
			st.wSecond,
			st.wMilliseconds);
//返回格式为2019-06-10 16:00:03:0919
	return
在 MATLAB 中,若需要将数据十六进制格式写入文件,可以使用 `fprintf` 函数,并结合适当的格式字符串来实现。以下是一个完整的示例流程: ### 1. 写入单个十六进制数值 ```matlab % 打开文件用于写入 fid = fopen('output_hex.txt', 'w'); % 定义一个十进制数 decimalValue = 255; % 将其转换为大十六进制写入文件 fprintf(fid, '%X\n', decimalValue); % 关闭文件 fclose(fid); ``` 此代码会将数字 `255` 转换为十六进制形式 `"FF"` 并写入文件 `output_hex.txt` 中。 --- ### 2. 写入多个十六进制数值(按行排列) 如果需要写入多个数值,每行一个十六进制表示,可采用如下方式: ```matlab % 示例十进制数组 decimalArray = [10, 255, 16, 256]; % 打开文件 fid = fopen('output_hex_multiple.txt', 'w'); % 遍历数组并将每个元素以十六进制写入文件 for i = 1:length(decimalArray) fprintf(fid, '%X\n', decimalArray(i)); end % 关闭文件 fclose(fid); ``` 此代码会生成一个包含以下内容的文本文件: ``` A FF 10 100 ``` --- ### 3. 使用 `dec2hex` 显式转换后再写入 也可以先使用 `dec2hex` 函数将十进制数组转换为十六进制字符串矩阵,然后再写入文件: ```matlab % 十进制数组 decimalArray = [10, 255, 16, 256]; % 转换为十六进制 hexStrings = dec2hex(decimalArray); % 打开文件 fid = fopen('output_hex_dec2hex.txt', 'w'); % 写入每一行 for i = 1:size(hexStrings, 1) fprintf(fid, '%s\n', hexStrings(i, :)); end % 关闭文件 fclose(fid); ``` 该方法适用于更复杂的场景,例如处理固定宽度的十六进制输出[^1]。 --- ### 4. 写入带前缀 `0x` 的十六进制格式 若希望每个十六进制数带有 `0x` 前缀,可以修改格式字符串为 `'0x%X\n'`: ```matlab fprintf(fid, '0x%X\n', decimalArray(i)); ``` --- ### 5. 写入二进制文件中的十六进制数据 如果目标是写入二进制文件而非纯文本文件,则应使用 `fwrite` 函数。例如,将十六进制解释的数据以字节形式写入二进制文件: ```matlab % 十进制数组 data = uint8([255, 16, 0, 128]); % 写入二进制文件 fid = fopen('binary_output.bin', 'wb'); fwrite(fid, data, 'uint8'); fclose(fid); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值