vc++从二进制文件读取了一段数据,存在了byte[]数组中,使用memcpy将它们复制到wchar*中,然后赋给cstringw,可是在输出的时候,cstringw的后面比我从文件中读出来的字符串多了一位,而且还是有点规律的字符。
请大家帮忙解惑,最好能给出一些读取二进制文件,然后转换成字符串显示的实例,谢谢大家。
我是读取的xls文件,在读取sheetname的时候,sheetname的名字后面会多一个字符,每次读取有变化。
xls文件中对sheetname的存储有区分,含中文的用双字节,不含的用单字节,我也是按照他的标准读取的长度。
我再网上找了集中方法可以把读出来的内容赋值到变量了,但是不知道用memcpy是不是正确的方法,单步调试的时候,当执行完memcpy后wchar*的内容结尾处就已经多了字符了。
麻烦大家再帮忙讲解一下,谢谢。
感谢您的回答,我补充了一下问题,麻烦您在帮忙看一下,谢谢。
追答我没有读过XLS文件。。如果多了字符,就是拷贝时的长度问题,你相应的减少就行了。。
拷贝之前最好把内存置0.。
vs2008 工程是unicode的 文件中读取的字符包括中文,感谢您的回答,希望您能再帮忙讲解一下。
追答读出来WideCharToMultiByte然后直接输出嘛
追问请问,这样可以直接输出到edit或者messagebox吗? 谢谢
追答直接读取是可以的 关键是你要清楚你到底要读的是什么编码?
vc++读取二进制 转换字符
file.seekg+3) ——指针当前位置向后移动三个字符 5、对文件操作完毕后别忘了关闭文件。file.close;以上5个步骤就完成了对文件的读写操作。文本文件的操作是相同的,比二进制文件还要简单。
VC++ 二进制字符串转ascii字母
直接转就行了,示例如下:include <iostream> include <cstdlib> using namespace std;int main(){ char str[]="01000010";char c;c=strtol(str,NULL,2);cout<<"The char is "<<c<<endl;return 0;}
VC++中二进制数如何转换为十六进制 以及如何得到移位符移出的数据_百度...
1. 二进制和十六进制本质是一样的,不知道你为什么非要转换,如果非要转,那么就四位一处理,也就是四个二进制位对应一个十六进制位。2. 要想得到移位移出的数据,只能自己记录移出了哪些数据 int count = 4 ; \/\/移位数 int temp = 0 ;int num ; \/\/ 要移位的数 int a[10] ;\/\/ 记录移...
如何vc++6.0使用CFile类读取含结构体的二进制文件?
如何vc++6.0使用CFile类读取含结构体的二进制文件? 10 需要读取的文件sz000010.day的数据结构是:每32个字节为一条记录00-03字节:整型,intdate;\/\/eg.2009042704-07字节:整型,int_open;08-11字节:整型,int_high;12-15字节:整型,int... 需要读取的文件sz000010.day的数据结构是:每32个字节为一条记录00-03...
求vc读HEX文件并转换成二进制bin文件的代码
const int N=1024; \/\/我每次从文件中读1024个字节进行转换,你可以根据需要适当调节。\/\/ strHexPathName是你要转换的Hex文件路径字符串(包括路径,文件名和扩展名)\/\/ strBinPathName是转换后的Bin文件路径字符串(包括路径,文件名和扩展名)void Convert(LPCTSTR strHexPathName,LPCTSTR strBinPathN...
VC++ 二进制字符串转二进制数组
int data=0;int i=0;for(i=0;i<len;i++){ data<<=1;if(str[i]=='1'){ data+=1;} } return data;} int main(int argc, char *argv[]){ int byte;char str[]="1011";byte=conv2bin(str);printf("%d\\n",byte);return 0;} 字符串到二进制的转换 函数conv2bin 转换完后...
刚开始学习VC++,请问"Trans_H = Trans_M << 1;"中"<<"是什么意思呢...
"<<"是位运算符,就是按二进制向左移一位,比如:3<<1 由于3的二进制是:11,故向左移一位变成:110,即是6 而同样道理”>>”就是右移位运算.
急!!!如何在VC++6中将DB文件中包含的2进制数据转化成10进制数据!_百度...
define N 10 int main(){ int a [N]; \/\/ 存放二进制位的数组 int rhs, i; \/\/ rhs 存放输入的数, i 存放二进制数的位数 printf("请输入一个三位十进制数字:\\n");scanf("%d", &rhs);for( i = 0; rhs != 0; rhs = rhs \/ 2, ++i) \/\/ 进行进制转换 a[i] = rhs ...
VC++中如何改变文件编码方式?
你可以使用_T("")宏把字符串转成UNICODE编码,不如_T("Hello World!"),不过可不能再保存到char数组里了,微软给我们准备了一个TCHAR,其实就是一个 short int型数组,UNICODE 需要2个字节来表示一个数组,现在只要把TCHAR内存块写进文件就OK了,对C++来说它还是一串二进制数据。另外,微软极力建...
C++编程 将字符串转换为二进制码输出
可以定义一个函数,实现把一个字符转换为二进制码输出。在函数中,先将1左移7位,就可以得到二进制值10000000,再将此值与一个字符“按位与”,然后判断其值是否为0。不为0就输出1,否则就输出0。类似的操作做8次,就可以输出一个字节的8位二进制码了。include<stdio.h> void prt(char c){int...