“07544269746D61708A5A0000424D8A5A0000000000003600000028000000A300
      00002F0000000100180000000000545A00000000000000000000000000000000
      0000C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
      C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0”以上是文本文件内容,我想写成另一个二进制文件,在UltraEdit中打开16进制显示为:
      07 54 42 69 74 6D 61 70 8A 5A 00 00 42 4D 8A 5A
      。
      。
      。可否有办法?另外是否有办法反写回为文本文件?
现在没有五笔,以上源引coldbird (笑笑生)的问题  ^_^
http://community.csdn.net/Expert/topic/3606/3606927.xml?temp=.3035547

解决方案 »

  1.   

    //十六进制转换为二进制
    CString DecimalToBinary(CString strDecimal)
    {
    int nDecimal = atoi(strDecimal.GetBuffer(0));
    int nYushu; 
    int nShang;
    CString strBinary = "";
    char buff[2];
    CString str = "";
    BOOL bContinue = TRUE;
    while(bContinue)
    {
    nYushu = nDecimal%2;
    nShang = nDecimal/2;
    sprintf(buff,"%d",nYushu);
    str = strBinary;
    strBinary.Format("%s%s",buff,str);
    nDecimal = nShang;
    if(nShang==0)
    bContinue = FALSE;
    } return strBinary;
    }
      

  2.   

    example:
    CString str("5a");
    CString strTemp, strRes="";
    int dwValue = strtoul(str, NULL, 16);
    strTemp.Format("%d", dwValue);
    strRes = DecimalToBinary(strTemp);
      

  3.   

    以下测试通过:char value[] = "1234";
    char value1[10];for (unsigned int i = 0; i < strlen(value); i ++)
    {
    value1[i] = (value[i * 2] - '0') * 16 + value[i * 2 + 1] - '0';
    }
    value1[i] = 0;
      

  4.   

    粘错了,以下为正解: char value[] = "1234";
    char value1[10]; for (unsigned int i = 0; i < strlen(value) / 2; i ++)
    {
    value1[i] = (value[i * 2] - '0') * 16 + value[i * 2 + 1] - '0';
    }
    value1[i] = 0;
      

  5.   

    全部代码: char value[50] = "1234";
    char value1[10];//ASC-》BIN
    for (unsigned int i = 0; i < strlen(value) / 2; i ++)
    {
    value1[i] = (value[i * 2] - '0') * 16 + value[i * 2 + 1] - '0';
    }
    value1[i] = 0;//BIN-》ASC
    for (unsigned int i = 0; i < strlen(value1); i ++)
    {
    value[i * 2] = value1[i] / 16 + '0';
    value[i * 2 + 1] = value1[i] % 16 + '0';
    }
    value[i * 2] = 0;