如何将"Hex Data"保存到 CAPL 中的文件 (ASCII) 中,包括"NULL"字符 (0x00)?



在CAPL代码中,我有一个"字节[]"数组,此数组应该保持" hex"值(00..ff(。

问题是,当我尝试将"十六进制"数组保存到" ASCII"格式的文件中时,它完全忽略了" 00"(这是" null"字符(,从而导致输出文件损坏。<<<<<<<<<<<<<</p>

variables
{
    byte UploadedData[56, 41, 4C, 00, 01, 02, 00, 02];
    char ExportedTextFile[9];
    char FileName[32] = "FlasherImage.can";
    dword FileHandle = 0;
}
void ExportDataFile(void)
{  
    int u16Index = 0;

    FileHandle = OpenFileWrite(FileName, 0);  
    for (u16Index = 0; u16Index < 8; u16Index++)
    { 
        snprintf(ExportedTextFile, elcount(ExportedTextFile), "%c", UploadedData[u16Index]);
        filePutString(ExportedTextFile, elcount(ExportedTextFile), FileHandle);
    }
    fileClose(FileHandle);
}

预期的文件应为:valnulsohstxnulstx

获得的文件是(忽略了" nul"(:valsohstxstx

其中:V:角色'V'。答:角色" a"。L:角色" L"。NUL:" null"控制字符。SOH:"启动标题"控制字符。STX:"启动文本"控制字符。

请帮助我任何解决方案或解决方法。

非常感谢。

我找到了答案:)

简单地,不要以" ASCII"模式写入,也不要使用将"二进制数据"解释为" ASCII数据"(字符(的" snprintf(("。

新代码:

void ExportBinaryFile(void)
{    
  FileHandle = OpenFileWrite(FileName, 1); 
  fileWriteBinaryBlock(UploadedData, elcount(UploadedData), FileHandle);
  fileClose(FileHandle);
}

最新更新