高难度的字节转换问题

binapex 2005-06-02 03:57:32
难度比较大,主要是要把单字节的转换成双字节。例如:
12345转换成:一二三四五或者壹贰叁肆伍;
原来该软件只支持单字节,现在要改成支持双字节。
凡提供思路者一律给分。
如果特别有帮助的,可另外加分。
当然,这里并不是只有这些数字的转换问题,其他单字节英文的转换也需要的。
...全文
469 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
raynors 2005-08-23
  • 打赏
  • 举报
回复
我不是很清楚楼主在讨论什么.

如果是一个开发过的软件.除非你是ASM达人.否则别想

如果是一份源程序,难道这样也会"不支持"双字节的情况吗?

实在是不明白,完全没有其他意思
binapex 2005-08-18
  • 打赏
  • 举报
回复
而且需要地址映射
binapex 2005-08-18
  • 打赏
  • 举报
回复
跟微软交流得到的最终结果:
在完全不支持双字节的情况,这个问题是无法解决;
在操作系统支持双字节,而软件核心不支持双字节的情况下,可以改,但是难度很大,大概是要用映射表,而且需要对应每一个单词。^_^,搞这个表的时间都会比开发时间长了。

hanhai118 2005-08-01
  • 打赏
  • 举报
回复
如果俺 没有记错的话,windows api有这样的函数, 是到宽字符的转换
jixingzhong 2005-07-24
  • 打赏
  • 举报
回复
设表好了


查询也不是很麻烦
zxk105 2005-07-15
  • 打赏
  • 举报
回复
下面两个函数是单字节跟双字节之间的互相转换..
wstring McsToWcs(const string& mcs)
{
wchar_t* wChars = new wchar_t[mcs.size() + 1];
size_t len = mbstowcs(wChars, mcs.c_str(), mcs.size());

if (len == (size_t)-1)
len = 0;

wChars[len] = 0;
wstring wStr(wChars);
delete[] wChars;
return wStr;
}

string WCToMB(const wstring& mcs)
{
char* chars = new char[2 * mcs.size() + 1];
int len = WideCharToMultiByte(CP_ACP, 0, mcs.c_str(), mcs.size(), chars,
2 * mcs.size(), NULL, NULL);

if (len == -1)
len = 0;

chars[len] = 0;
string str(chars);
delete[] chars;
return str;
}
Willpro 2005-07-14
  • 打赏
  • 举报
回复
就是支持UNICODE 的问题吧!

重写函数吧!
Soundboy 2005-07-12
  • 打赏
  • 举报
回复
这个问题在一些书中提到了,你可是试试把你需要改动的地方的变量类型都做成Unicode的。
原来用char的地方改为用wchar.
如果是Windows下,那么CHAR就可以了。

还有相关函数也要改。
不知道你的具体问题是什么。
arrowcy 2005-07-08
  • 打赏
  • 举报
回复
原来该软件只支持单字节,现在要改成支持双字节。
====================================================
这一个要求恐怕不容易实现吧?一个最简单的例子就是软件的资源里面为字符分配的空间就不够,你要把源代码里面的很多东西都该了才行

其他要求就是一个查表转换的过程,应该不会太复杂吧?
qrlvls 2005-07-07
  • 打赏
  • 举报
回复
高难度??
用最弱的方式三十行也写出来了
thuers 2005-06-16
  • 打赏
  • 举报
回复
对应表
idau7 2005-06-07
  • 打赏
  • 举报
回复
显示的时候更改试试看
plovej 2005-06-06
  • 打赏
  • 举报
回复
学习!
yezhongxing_sina 2005-06-06
  • 打赏
  • 举报
回复
总是需要辅助空间啊?转换后文件总会变大咯,晕,不好弄。
有办法转?修改原数据结构吧哈,空间弄大些。
又是千年虫问题
liushu01 2005-06-05
  • 打赏
  • 举报
回复
还是比较难,如果界面显示的话,可以考虑使用映射表
binapex 2005-06-04
  • 打赏
  • 举报
回复
难度主要是原来只支持单字节,现在需要支持双字节
nicknide 2005-06-03
  • 打赏
  • 举报
回复
个人认为不需要改变什么,纯粹一个字符串运算,真不知道这个高难度从何而来...
sea2000cn 2005-06-03
  • 打赏
  • 举报
回复
用映射表可以实现。有些平台封装了可以解决的方法,用一个结构体,前一个字符表示高位,后一个字符表示低位……
nasi00 2005-06-03
  • 打赏
  • 举报
回复
为什么要改?

内部运算应该不需要改吧,如果显示的时候需要改的话,那么就在显示的时候转换一下就好了阿
积木 2005-06-02
  • 打赏
  • 举报
回复
这个是最大的问题啊,简直就是给程序来一个更换皮肤么……
可惜没有Lookandfell。
加载更多回复(1)

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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