C--16進(jìn)制文本轉(zhuǎn)換為ascii碼_第1頁
C--16進(jìn)制文本轉(zhuǎn)換為ascii碼_第2頁
C--16進(jìn)制文本轉(zhuǎn)換為ascii碼_第3頁
C--16進(jìn)制文本轉(zhuǎn)換為ascii碼_第4頁
C--16進(jìn)制文本轉(zhuǎn)換為ascii碼_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、我用的將16進(jìn)制文本轉(zhuǎn)換為ascii碼的C語言代碼。16進(jìn)制文本復(fù)制到文件test.txt中,運(yùn)行程序,將得到輸入。例:運(yùn)行:./CSTRING test.txt其中,test.txt文件內(nèi)容為:30:31:32則得到的"Cstring.txt"輸入文件中012:“ ”,“ 或空格等,判本程序能自動(dòng)跳過0或多個(gè)分隔符(分隔符可以為任意的符號(hào),如 斷的函數(shù)實(shí)現(xiàn)見 Skip Delimiter函數(shù))。如:輸入文件內(nèi)容為:323031303132得到的都是012cpp view plain copy1.#include <stdio.h>2.#include <

2、unistd.h>3.#include <string.h>4.#include <sys/t yp es.h>5.#include <sys/stat.h>6.#include <libgen.h>7.#include <fcntl.h>8.#include <stdlib.h>9.10.typedef unsigned char uint8;11.12.uint8 ConverseOneChar(uint8 ucChar)13.14.15.uint8 ucT mp = 0x00;"one ucChar=

3、 0x%xn", ( char )ucChar);printf(16.switch (ucChar)Il7.18.case '0':19.ucT mp = 0x00;20.break ;21.case '1':22.ucT mp = 0x01;23.break ;24.case '2':25.ucT mp = 0x02;26.break ;27.case '3':28.ucT mp = 0x03;29.break ;30.case '4':31.ucT mp = 0x04;32.break ;33.cas

4、e '5':34.ucT mp = 0x05;35.break ;36.case '6':37.ucT mp = 0x06;38.break ;39.case '7':40.ucT mp = 0x07;41.break ;42.case '8':43.ucT mp = 0x08;44.break ;45.case '9':46.ucT mp = 0x09;47.break ;48.case 'a':49.case 'A':50.ucT mp = 0x0a;51.break ;52.c

5、ase 'b':53.case 'B':54.ucT mp = 0x0b;55.break ;56.case 'c':57.case 'C':58.ucT mp = 0x0c;59.break ;J60.case 'd':61.case D :62.ucT mp = OxOd;63.break ;64.case 'e':65.case 'E':66.ucT mp = 0x0e;67.break ;68.case 'f'69.case 'F':70.uc

6、T mp = 0x0f;71.break ;72.default73.printf("err char!n" );74.return -1;75.76.return ucT mp;77.78.79.uint8 GetOneChar(uint8 *p ucBuf)80.81.uint8 ucChar = 0x00;82.if (NULL = pucBuf)83.84.printf("para is NUL L!n");85.return -1;9.ucChar = ConverseOneChar( pucBuf0);printf( &q

7、uot;first ucChar= 0x%xn"char )ucChar);90.ucChar <<= 4;91.ucChar |= ConverseOneChar( pucBuf1);92.printf("second ucChar= %c0x%xn",(char )ucChar, ucChar);93.94.returnucChar;95.96.97.intSki pDelimiter(uint8 *p cBuf)99.int n = 0;100.char *pcBufTmp = ( char *)pcBuf;102.n !=for (n = 0;

8、 (pcBufTmpn !='r'); n+)'0')&& (p cBufT mp n !='n') && (p cBufT mp04.if (pcBufTmpn='0')105.| (pcBufT mpn='1')106.| (pcBufT mpn='2')107.| (pcBufT mpn='3')108.| (pcBufT mpn='4')109.| (pcBufT mpn='5')110.

9、| (pcBufT mpn='6')111.| (pcBufT mpn='7')112.| (pcBufT mpn='8')113.| (pcBufT mpn='9')114.| (pcBufT mpn='A' ) | (pcBufTmpn='a')115.| (pcBufT mpn='B' ) | (pcBufTmpn='b')116.| (pcBufT mpn='C' ) | (pcBufTmpn='c')117.| (pcBufT

10、 mpn='D' ) | (pcBufTmpn='d')118.| (pcBufT mpn='E' ) | (pcBufTmpn='e')119.| (pcBufT mpn='F' ) | (pcBufTmpn='f')120.121.break ;25.return n;126.127.128.intParseHexString(unsigned*p ucDstBuf)char *pucSrcBuf,int iSrcFileLen, unsignedchar141.144

11、.145.129.130.uint8 *p ucSrcT mp = NULL;131.uint8 *p ucDstT mp = NULL;132.uint8 ucT mp = 0;133.intiFileLenRemain = iSrcFileLen;134.intiDelimiterNum = 0;135.intn = 0;136.137.if (NULL = pucSrcBuf)|(NULL = pucSrcBuf)138.139.printf("para 1 or 2 is NUL L!n");140.return -1;142.p ucSrcT mp = p ucS

12、rcBuf;143.p ucDstT mp = p ucDstBuf;146.while (iFileLenRemain != 0)147.148.ucT mp = GetOneChar( pucSrcT mp);186.189.149.printf("ucTmp = %cn", ( char )ucTmp);150.p ucDstT mp n+ = ucT mp;151.152.p ucSrcT mp += 2;153.iDelimiterNum = Skip Delimited pucSrcT mp);154.155.printf(p ucSrcT mp += iDel

13、imiterNum;"iDelimiterNum=%dn" , iDelimiterNum);156.iFileLenRemain -= 2 + iDelimiterNum;157.158.159.return n;160.161.162.intmain( int argc, char *argv)164.intiRet = 0;165.char*p cFileForChange = NULL;166.intiSrcFd = 0;167.intiDstFd = 0;168.intiSrcFileLen = 0;169.intn = 0;170.unsignedchar *p

14、ucSrcBuf = NULL;171.unsignedchar *pucDstBuf = NULL;163.172.173.if (argc != 2)174.175.printf("you need input the filename to change!n");176.return -1;177.178.179.p cFileForChange = argv1;180.printf("filename:%sn" , p cFileForChange);181.182.iSrcFd = op en( pcFileForChange, O_RDONL

15、Y); if (iSrcFd < 0)183.184.185.printf(return"open file:%s faild!n"-1;,p cFileForChange);187.iDstFd = open("Cstring.txt",0_RDWR | O_CREAT | O_TRUNC, 0644);188.if (iDstFd < 0)190.printf("open change filename file faild!n");191.return -1;192.193.194.iSrcFileLen = lse

16、ek(iSrcFd, 0, SEEK_END);195.printf("FileLen:%dn" , iSrcFileLen);196.lseek(iSrcFd, 0, SEEK_SET);197.pucSrcBuf = malloc(iSrcFileLen + 1024);198.199.p ucDstBuf = malloc(iSrcFileLen); memset (p ucSrcBuf, 0, iSrcFileLen);200.memset (p ucDstBuf, 0, iSrcFileLen);201.202.iRet = read(iSrcFd, pucSrcBuf, iSrcFileLen);203.if (iRet != iSrcFileLen)204.205.printf("read err, read len = %dn",iRet);206.return -1;207.208.printf("read:%sn" , pucSrcBuf);209.210.n = P arseHexString( pucSrcBuf, iSrcFileLen,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論