char数组存储wchar//就是数组大小多*2呗,还需要WideCharToMultiByte?

mirroatl187 2013-08-26 10:49:04
!!!!!!!!!!!!!!!!!!!!!!!!
...全文
223 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirroatl187 2013-08-27
  • 打赏
  • 举报
回复
linux 宽字节转多子节 没有现成的函数怎么办?
引用 2 楼 wangdahu888 的回复:
WideCharToMultiByte 函数功能:该函数映射一个unicode字符串到一个多字节字符串 不一样呀,得转换编码呀,将Unicode转换成多字节字符集
mirroatl187 2013-08-27
  • 打赏
  • 举报
回复
linux 宽字节转多子节 没有现成的函数怎么办?
引用 1 楼 worldy 的回复:
当然,码值完全不一样
mirroatl254 2013-08-27
  • 打赏
  • 举报
回复
我这么存储数据 不行吗????
引用 11 楼 mirroatl254 的回复:
我多字节的程序 打开一个宽字节的文件哦! fseek(fp_file,- 256*2 ,SEEK_END);//从文件尾开始读256个字节 ,但是我是多字节程序 就多*2了。。。 [quote=引用 9 楼 baichi4141 的回复:] 从楼主你不停更换ID发各种各样的奇怪问题这一点来看,我建议楼主先停止各种各样的想象,去静下心来好好学一学相关的基础知识 磨刀不误砍柴工,基础知识不好的话,只凭空想是没办法在技术这条路上走远的 简单地说,多字节宽字节是用来将二进制数据和字符串对应的,跟你用char还是用wchar_t存储二进制数据一点关系都没有(当然使用它们很方便),而图像/图片相关和多字节宽字节也是一点关系都没有,用char数组保存图像图片的原因是它是一字节,仅此而已
[/quote]
mirroatl254 2013-08-27
  • 打赏
  • 举报
回复
我多字节的程序 打开一个宽字节的文件哦! fseek(fp_file,- 256*2 ,SEEK_END);//从文件尾开始读256个字节 ,但是我是多字节程序 就多*2了。。。
引用 9 楼 baichi4141 的回复:
从楼主你不停更换ID发各种各样的奇怪问题这一点来看,我建议楼主先停止各种各样的想象,去静下心来好好学一学相关的基础知识 磨刀不误砍柴工,基础知识不好的话,只凭空想是没办法在技术这条路上走远的 简单地说,多字节宽字节是用来将二进制数据和字符串对应的,跟你用char还是用wchar_t存储二进制数据一点关系都没有(当然使用它们很方便),而图像/图片相关和多字节宽字节也是一点关系都没有,用char数组保存图像图片的原因是它是一字节,仅此而已
  • 打赏
  • 举报
回复
mbstowcs
baichi4141 2013-08-27
  • 打赏
  • 举报
回复
从楼主你不停更换ID发各种各样的奇怪问题这一点来看,我建议楼主先停止各种各样的想象,去静下心来好好学一学相关的基础知识 磨刀不误砍柴工,基础知识不好的话,只凭空想是没办法在技术这条路上走远的 简单地说,多字节宽字节是用来将二进制数据和字符串对应的,跟你用char还是用wchar_t存储二进制数据一点关系都没有(当然使用它们很方便),而图像/图片相关和多字节宽字节也是一点关系都没有,用char数组保存图像图片的原因是它是一字节,仅此而已
baichi4141 2013-08-27
  • 打赏
  • 举报
回复
引用 7 楼 mirroatl187 的回复:

我多字节方式打开一个宽字节的文件 取出文件尾的后256个字节 数组多乘以*2 行吧??? 
FILE *fp_file  = fopen(file_path,"rb");	
char image_size_temp[256 * 2];
fseek(fp_file,- 256*2 ,SEEK_END);
int ret = (256 * 2 == fread(image_size_temp,1,256 * 2 ,fp_file));
if(!ret)
return 0;

[quote=引用 6 楼 baichi4141 的回复:] WideCharToMultiByte是windows提供的转码函数 建议使用标准库函数wcstombs,便于移植
[/quote] 真心不能理解你的需求和思路 首先,多字节和宽字节是“二进制数据”和“字符串文本”之间的两种对应关系,数据本身没有多字节宽字节之分,只有在这段数据代表着一段字符串文本的时候,才根据多字节宽字节UTF等编码思想和英语法语汉语等等具体语言环境将这段数据转换为对应的文本,因此,我无法理解“多字节方式打开一个宽字节的文件”这句话的意义 然后,既然是数据和文本之间的对应关系,你的代码中的“image_size_temp”就意义不明,一般命名为image的都是图像/图片相关,没有文本因此不分多字节宽字节 再然后,我真心无法理解为什么是“后256个字节” 最后,如果是windows下的文本文件,宽字节保存的话会在文件最开头处放置0xff0xfe两个字节,当记事本等文本文件编辑器读取文本文件时,如果开头是这两个字节,就会按照宽字节来将文件内的数据转换成字符串文本,否则就将文件内部的数据匹配多字节或者UTF等等,看哪种编码思想和数据最匹配就使用哪种(偶尔也有匹配错的,例如最著名的为什么联通干不过移动的冷笑话)。
mirroatl187 2013-08-27
  • 打赏
  • 举报
回复

我多字节方式打开一个宽字节的文件 取出文件尾的后256个字节 数组多乘以*2 行吧??? 
FILE *fp_file  = fopen(file_path,"rb");	
char image_size_temp[256 * 2];
fseek(fp_file,- 256*2 ,SEEK_END);
int ret = (256 * 2 == fread(image_size_temp,1,256 * 2 ,fp_file));
if(!ret)
return 0;

引用 6 楼 baichi4141 的回复:
WideCharToMultiByte是windows提供的转码函数 建议使用标准库函数wcstombs,便于移植
baichi4141 2013-08-27
  • 打赏
  • 举报
回复
WideCharToMultiByte是windows提供的转码函数 建议使用标准库函数wcstombs,便于移植
mLee79 2013-08-27
  • 打赏
  • 举报
回复
用 libiconv , 这些事情基本上都是Linux下方便多了.
引用 3 楼 mirroatl187 的回复:
linux 宽字节转多子节 没有现成的函数怎么办?
引用 1 楼 worldy 的回复:
当然,码值完全不一样
  • 打赏
  • 举报
回复
WideCharToMultiByte 函数功能:该函数映射一个unicode字符串到一个多字节字符串 不一样呀,得转换编码呀,将Unicode转换成多字节字符集
worldy 2013-08-26
  • 打赏
  • 举报
回复
当然,码值完全不一样

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧