如何将单字节转换成双字节?(在线等!)

snakers 2005-09-07 02:49:46
“永嘉路15*4*2楼”转换成“永嘉路15*4*2楼”即半角转全角
...全文
347 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
snakers 2005-10-18
多谢“rexsp(真水无香) (PPTech.Net)”的清晰解说!!!!
回复
snakers 2005-10-18
多谢“rexsp(真水无香) (PPTech.Net)”的清晰解说!!!!
回复
snakers 2005-10-18
多谢“rexsp(真水无香) (PPTech.Net)”的清晰解说!!!!
回复
aspcn 2005-10-16
把计算机组成原理前两章看完,心里就有底了。
回复
liminlovemama 2005-10-13
listening...
回复
liuke209 2005-10-09
学习当中.....
回复
kekehenu 2005-10-09
xue xi zhong zhang jian shi
回复
YAOHE 2005-10-09
我来晚了,按 pupo(泡泡) ( )地方法做就可以了
回复
rexsp 2005-10-08
数字与英文的全角字符Unicode编码为U+FFXX,数字与英文的半角字符Unicode编码为U+00XX,它们后两位相差0x20,十进制为32,故加32转为半角数字或英文。只能转换英文或数字,其他下面方法不能实现。半角数字与英文转到全角数字或英文则相反。

//// <summary>
/// 将所输入字符进行半角到全角转换
/// </summary>
/// <param name="strInput">半角字符串</param>
/// <returns>全角字符串</returns>
public string banjiaoTOquanjiao(string strInput)
{
string strNewInput = "";
//将要转换的字符串取到字符数组中
char[] charOldInput = strInput.ToCharArray();
for(int i = 0; i < charOldInput.Length; i++)
{
//每次取出一位字符
byte[] byteOldInput = System.Text.Encoding.Unicode.GetBytes(charOldInput, i, 1);
if(byteOldInput.Length == 2)
{
//改变字符编码,将前两位置为0xFF,后两位减32,转为半角Unicode编码
if(byteOldInput[1] == 0)
{
byteOldInput[0] = (byte)(byteOldInput[0] - 32);
byteOldInput[1] = 255;
charOldInput[i] = System.Text.Encoding.Unicode.GetChars(byteOldInput)[0];
}
}
}
//组成新的字符串
strNewInput = new string(charOldInput);
return strNewInput;
}
回复
navy_koo 2005-10-08
帮你顶一下,等待更完美的解决方案。。。
回复
netzww 2005-09-22
public class Win32API
{
[DllImport("kernel32.dll", SetLastError=true)]
public static extern int LCMapString(int Locale, int dwMapFlags,
string lpSrcStr, int cchSrc, StringBuilder lpDestStr, int cchDest);
}

public static string ToWide( string source )
{
StringBuilder sbDestination = new StringBuilder( GetStringLength(source) * 2 );
Win32API.LCMapString( Win32API.GetSystemDefaultLCID(), Win32API.LCMAP_FULLWIDTH, source, -1, sbDestination, sbDestination.MaxCapacity );
return sbDestination.ToString().Replace("\0","");
}
回复
feiboynet 2005-09-21
本来就是这样的,半角和全角没有明确的对应关系的,虽然我一眼就分出来,但是,用程序就是比较麻烦呀。用REPLACE吧,或自己写函数来替换吧
回复
pupo 2005-09-21
VB的StrConv函数,在C#中使用的话添加对Microsoft Visaul Basic.net Runtime的引用就可以用了
Dim a As String = "永嘉路15*4*2楼"
MsgBox(StrConv(a, VbStrConv.Wide))
回复
碼上道 2005-09-12
STUDY!
回复
navy_koo 2005-09-12
学习!!!

不过楼上的方法是治标不治本的。。。
回复
TechEye 2005-09-12
string str = "永嘉路15*4*2楼";

str = str.Replace("1", "1").Replace("2","2").Replace(...);

:)
回复
发动态
发帖子
分析与设计
创建于2007-09-28

1.3w+

社区成员

.NET技术 分析与设计
申请成为版主
社区公告
暂无公告