能不能帮我把下面的用UTF8编码显示

qiuqingpo 2014-11-13 06:20:11

下面是的二进制用的是ASCII字符表示,可是用ASCII,又不支持中文,能不能帮我用UTF8实现,谢谢
代码中出现的Sidle是我的网名。 

/*
* @Author WuErPing
* @Version 1.0
* @Date 2004/11/30
* @Description:
*/
using System;
using System.Text;
namespace SidleHelper
{
/// <summary>
/// Summary description for StrHelper.
/// 命名缩写:
/// Str: unicode string
/// Arr: unicode array
/// Hex: 二进制数据
/// Hexbin: 二进制数据用ASCII字符表示 例 字符'1'的hex是0x31表示为hexbin是 '3''1'
/// Asc: ASCII
/// Uni: UNICODE
/// </summary>
public sealed class StrHelper
{
#region Hex与Hexbin的转换
public static void Hexbin2Hex(byte[] bHexbin, byte[] bHex, int nLen)
{
for(int i=0; i<nLen/2; i++)
{
if(bHexbin[2*i] <0x41)
{
bHex[i] = Convert.ToByte(((bHexbin[2*i] - 0x30)<<4) & 0xf0);
}
else
{
bHex[i] = Convert.ToByte(((bHexbin[2*i] - 0x37)<<4) & 0xf0);
}

if(bHexbin[2*i+1] <0x41)
{
bHex[i] |= Convert.ToByte((bHexbin[2*i+1] - 0x30) & 0x0f);
}
else
{
bHex[i] |= Convert.ToByte((bHexbin[2*i+1] - 0x37) & 0x0f);
}
}
}
public static byte[] Hexbin2Hex(byte[] bHexbin, int nLen)
{
if(nLen%2 !=0)
return null;
byte[] bHex = new byte[nLen/2];
Hexbin2Hex(bHexbin, bHex, nLen);
return bHex;
}
public static void Hex2Hexbin(byte[] bHex, byte[] bHexbin, int nLen)
{
byte c;
for(int i=0;i<nLen;i++)
{
c = Convert.ToByte((bHex[i]>>4) & 0x0f);
if(c < 0x0a)
{
bHexbin[2*i] = Convert.ToByte(c + 0x30);
}
else
{
bHexbin[2*i] = Convert.ToByte(c + 0x37);
}
c = Convert.ToByte(bHex[i]&0x0f);
if(c < 0x0a)
{
bHexbin[2*i+1] = Convert.ToByte(c + 0x30);
}
else
{
bHexbin[2*i+1] = Convert.ToByte(c + 0x37);
}
}
}
public static byte[] Hex2Hexbin(byte[] bHex, int nLen)
{
byte[] bHexbin = new byte[nLen*2];
Hex2Hexbin(bHex, bHexbin, nLen);
return bHexbin;
}
#endregion

#region 数组和字符串之间的转化
public static byte[] Str2Arr(String s)
{
return (new UnicodeEncoding()).GetBytes(s);
}
public static string Arr2Str(byte[] buffer)
{
return (new UnicodeEncoding()).GetString(buffer, 0, buffer.Length);
}

public static byte[] Str2AscArr(String s)
{
return System.Text.UnicodeEncoding.Convert(System.Text.Encoding.Unicode,
System.Text.Encoding.ASCII,
Str2Arr(s));
}

public static byte[] Str2HexAscArr(String s)
{
byte[] hex = Str2AscArr(s);
byte[] hexbin = Hex2Hexbin(hex, hex.Length);
return hexbin;
}
public static string AscArr2Str(byte[] b)
{
return System.Text.UnicodeEncoding.Unicode.GetString(
System.Text.ASCIIEncoding.Convert(System.Text.Encoding.ASCII,
System.Text.Encoding.Unicode,
b)
);
}

public static string HexAscArr2Str(byte[] buffer)
{
byte[] b = Hex2Hexbin(buffer, buffer.Length);
return AscArr2Str(b);
}
#endregion
}
}
...全文
140 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuqingpo 2014-11-24
  • 打赏
  • 举报
回复
还有没有别的答案了呢,我的也能转,最后一个汉字不能识别
tongxuejie 2014-11-18
  • 打赏
  • 举报
回复
先转为Byte,然后使用Encoding.UTF8.GetString。
s8848 2014-11-17
  • 打赏
  • 举报
回复
都先转成byte,然后重新编码,.
qiuqingpo 2014-11-14
  • 打赏
  • 举报
回复
怎么都沉了呢,小伙伴们都去哪了
qiuqingpo 2014-11-13
  • 打赏
  • 举报
回复
Hexbin2Hex Hex2Hexbin 这两个是如何转换的,二进制和utf8是如何转换的

 #region UTF-8
        private byte[] Str2Utf8(String s)
        {
            return (new UTF8Encoding()).GetBytes(s);
        }
        private string Utf82Str(byte[] buffer)
        {
            return (new UTF8Encoding()).GetString(buffer, 0, buffer.Length);
        }
        //字符串转换成字节数组
        private byte[] Str2Utf8Arr(String s)
        {
            return System.Text.UnicodeEncoding.Convert(System.Text.Encoding.Unicode, System.Text.Encoding.UTF8, Str2Utf8(s));
        }

        private byte[] Str2HexUtf8Arr(String s)
        {
            byte[] hex = Str2Utf8Arr(s);
            byte[] hexbin = Hex2Hexbin(hex, hex.Length);
            return hexbin;
        }
        //字节数组转换成字符串
        private string Utf8Arr2Str(byte[] b)
        {
            return System.Text.UTF8Encoding.UTF8.GetString(System.Text.UTF8Encoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.Unicode, b));
        }
        private string HexUtf8Arr2Str(byte[] buffer)
        {
            byte[] b = Hex2Hexbin(buffer, buffer.Length);
            return Utf8Arr2Str(b);
        }
        #endregion
我这样实现了,还是不行
忘丿殇 2014-11-13
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
Encoding.UTF8.GetString 这个?
应该是这个~
bdmh 2014-11-13
  • 打赏
  • 举报
回复
Encoding.UTF8.GetString 这个?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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