如何把中文数字字符串转成十六进制byte[]

“3阿”如何转换才能得到 结果: 0xa3 0xb3 0xb0 0xa2

byte[] arr = Encoding.UTF-8.GetBytes("3阿");
不知道你这个是什么编码的,这个转出来是4个byte数组,你自已转成16进制,不过和你要的对不上。编码的问题?

byte[] arr=Encoding.ASCII.GetBytes("3阿");

var bytes = Encoding.GetEncoding("GB2312").GetBytes("3阿");

没错,是GB2312

/// 从汉字转换到16进制
        /// </summary>
        /// <param name="s">需要转换的字符串</param>
        /// <returns>返回16进制</returns>
        public static string GetHexFromChs(string s)
        {
            System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");
            byte[] bytes = chs.GetBytes(s);
            StringBuilder Text = new StringBuilder();
            for (int i = 0; i < bytes.Length; i++)
            {
                Text.Append(string.Format("{0:X}", bytes[i]));
                Text.Append(" ");
            }
 
            string ggg = Text.ToString();
            string ggf = ggg.Substring(ggg.Length - 1, 1);
            if (ggf == " ")
            {
                ggg = ggg.Remove(ggg.Length - 1, 1);
            }
            return ggg;
        }
        #endregion

如果对应的字符是中文的,那么UTF8是不管用的,必须使用Default或者GetEncoder("gb2312"),如果你的计算机本地 culture and region不是中文的话,default没用的,必须使用gb2312。不用循环每一个byte的,只要 用 fangxinggood 那样的方法就可以了

UTF-8编码当然能保存汉字,网页基本上都是UTF-8编码的

UTF-8   标准ASCII 1一个字节  西欧的一般是2字节  GJK(中日韩字符集)一般来说是 3字节
GB2312(包括其他GB系列字符集) 标准ASCII 1字节  汉字两字节 。但是外国人看就是乱码,因为电脑上没装这个字符集
UTF-16 都是2字节。
(UTF-8 UTF-16 都能够转换为Unicode编码,所以外国人电脑看起来也不是乱码)

楼主的数据只有英文,用 UTF-8 GB2312 ASCII 来
小蜜蜂论坛回帖机转换结果都是一样的。
并且由于标识位的存在 0xB1 0xB8 0x2E  用Encoding类去转换,还会出现乱码
还不如一个字节一个字节的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值