使用vc6.0,從本地txt中讀取資料如“1512 16D1”,已經實作的功能是通過CString讀取了txt, 并轉存到了vector里面去了,并且將vector發一段刪一段。想要達到的效果是將“1512 16D1”按照15 12 16 D1發送,出現的問題是發送的結果是1 5 1 2 1 6 D 1這些字符對應的ASCII碼,例如1變成了31等等。請問各位大神,該如何實作上述功能,示例代碼即可,忘各位大神不吝賜教
uj5u.com熱心網友回復:
你這不是對的么? 讀的就是char ‘1’ 不就是31么 把讀的按char寫進txt檔案 不就是1了么uj5u.com熱心網友回復:
你定義的vector是什么型別的?uj5u.com熱心網友回復:
僅供參考:#include <stdio.h>
#include <string.h>
#include <conio.h>
FILE *fi,*fo;
int r;
unsigned int n,c;
long offset;
//-------------------------------------------------------
void main(int argc,char *argv[])
{
if (argc<3) {
cprintf("Hex2Bin srcfile desfile");
return;
}
if ((fi=fopen(argv[1],"rb"))==NULL) {
cprintf("Can not find file %s",argv[1]);
return;
}
if ((fo=fopen(argv[2],"wb"))==NULL) {
fclose(fi);
cprintf("Can not create file %s",argv[2]);
return;
}
n=0;
while (1) {
offset=ftell(fi);
r=fscanf(fi,"%2x",&c);
if (EOF==r) break;//
if (1==r) {
fputc(c,fo);
n++;
} else {//0==r
fseek(fi,offset,SEEK_SET);//因為VC6的Release版及其VC7,8,9,10,...版的fscanf未按約定保持offset不變,所以此處必須恢復offset
r=fgetc(fi);
if (EOF==r) break;//
}
}
fcloseall();
cprintf("OK to Hex2Bin %d bytes.",n);
}
uj5u.com熱心網友回復:
可以通過strtol方法uj5u.com熱心網友回復:
vector是BYTE型,然后轉成CBytearray發送的,問題是vector的每個元素是1 5 1 2這樣一個一個的,然后發送到板子里面之后再讀出來就是31 3531 32這樣的值,希望達到的效果是發送的東西是15 12這樣的發,然后讀取來驗證也是15 12這樣的
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/126393.html
標籤:基礎類
