c# UTF-16转UTF-8 互转
/// <summary>
/// UTF-16转UTF-8
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string UTF16To8(string str)
{
string res;
int i, len, c;
res = "";
len = str.Length;
; i < len; i++)
{
c = Convert.ToByte(str[i]);
if ((c >= 0x0001) && (c <= 0x007F))
{
res += str.CharAt(i);
}
else if (c > 0x07FF)
{
res += Convert.ToChar() & 0x0F));
res += Convert.ToChar() & 0x3F));
res += Convert.ToChar() & 0x3F));
}
else
{
res += Convert.ToChar() & 0x1F));
res += Convert.ToChar() & 0x3F));
}
}
return res;
}
/// <summary>
/// UTF-8转UTF-16
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string UTF8To16(string str)
{
string res;
int i, len, c;
int char2, char3;
res = "";
len = str.Length;
i = ;
while (i < len)
{
c = Convert.ToByte(str[i++]);
)
{
:
:
:
:
:
:
:
:
// 0xxxxxxx
res += str.CharAt(i - );
break;
:
:
// 110x xxxx 10xx xxxx
char2 = Convert.ToByte(str[i++]);
res += Convert.ToChar(((c & ) | (char2 & 0x3F));
break;
:
// 1110 xxxx 10xx xxxx 10xx xxxx
char2 = Convert.ToByte(str[i++]);
char3 = Convert.ToByte(str[i++]);
res += Convert.ToChar(((c & ) |
((char2 & ) |
((char3 & ));
break;
}
}
return res;
}
public static class te
{
/// <summary>
/// 返回指定位置字符
/// </summary>
/// <param name="str">原字符串</param>
/// <param name="index">字符索引,长度超出时返回:' '</param>
/// <returns></returns>
public static char CharAt(this string str, int index)
{
if (index > str.Length)
return ' ';
);
return Convert.ToChar(res);
}
}
c# UTF-16转UTF-8 互转的更多相关文章
- RGB与16进制色互转
点击进入新版 <前端在线工具站> CSS, JavaScript 压缩YUI compressor, JSPacker...HTML特殊符号对照表PNG,GIF,JPG... Base ...
- python进制转化函数,10进制字符串互转,16进制字符串互转
来了老弟,emmmmm,今天想到平时经常用到编码转化,把字符串转化为16进制绕过等等的,今天想着用python写个玩,查询了一些资料,看了些bolg 上面的两个函数是将二进制流转化为16进制,data ...
- js 16进制字符串互转
/** * 16进制转换为字符串 * @param hex * @returns {*} */ function hexToString(hex) { var tmp = ''; if (hex.le ...
- jmeter-Java关于MD5加密方法 以及16位32位互转
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现.将 ...
- Java-byte[]与16进制字符串互转
转自: http://www.cnblogs.com/freeliver54/archive/2012/07/30/2615149.html Java中byte用二进制表示占用8位,而我们知道16进制 ...
- BYTE数组与16进制字符串互转
//字节数组转换为HEX 字符串const string Byte2HexString(const unsigned char* input, const int datasize) { ]; ; j ...
- java中byte[] 和16进制字符串互转
//将byte[]转换为16进制字符串 public static String byte2hex(byte[] b) { StringBuilder hs = new StringBuilder() ...
- UTF—8与UTF—8(无bom)格式
BOM——Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在U ...
- python标准库之字符编码详解
codesc官方地址:https://docs.python.org/2/library/codecs.html 相关帮助:http://www.cnblogs.com/huxi/archive/20 ...
- Unicode、UTF-8 和 ISO8859-1到底有什么区别
说明:本文转载于新浪博客,旨在方便知识总结.原文地址:http://blog.sina.com.cn/s/blog_673c81990100t1lc.html 本文主要包括以下几个方面:编码基本知识, ...
随机推荐
- ABP框架系列之五十三:(Web-API-Controllers-Web-API-控制器)
Introduction ASP.NET Boilerplate is integrated to ASP.NET Web API Controllers via Abp.Web.Api nuget ...
- Bootstrap方法为页面添加一个弹出框
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Codeforces Round #512 E - Vasya and Good Sequences
有时候觉得自己就是个思路搬运机,只会搬运思路 这个题首先说了求的是好区间的个数, 好区间满足条件: 1.二进制位1的数量和为偶数 2.w[i]表示a[i]的二进制上1的个数 ,sum[i] = ...
- [UWP]在UWP平台中使用Lottie动画
最近QQ影音久违的更新了,因为记得QQ影音之前体验还算不错(FFmepg的事另说),我也第一时间去官网下载体验了一下,结果发现一些有趣的事情. 是的,你没看错,QQ影音主界面上这个动画效果是使用Lot ...
- [转]语音识别中区分性训练(Discriminative Training)和最大似然估计(ML)的区别
转:http://blog.sina.com.cn/s/blog_66f725ba0101bw8i.html 关于语音识别的声学模型训练方法已经是比较成熟的方法,一般企业或者研究机构会采用HTK工具包 ...
- 每日分享!canvas的使用~
今天大概的说下canvas的使用~ canvas是H5新增的一个元素,可以用来在canvas上绘制一些图形! 如何使用canvas呢? 首先我们用canvas绘制一条直线! <!DO ...
- 突然 不能f**q
ss 突然访问不了,于是去查看ip是否被f,发现国outer 国inner 都通,不知道什么情况,后来把 系统代理模式 改为全局,发觉可以,又把他改为 pac模式,正常了. 记录一 ...
- 漏洞应急响应之批量poc验证
1.文章难易度 [★★★] 2.文章知识点: python,poc验证; 3.文章作者: 野驴 4.本文参与 i春秋学院原创文章奖励计划,未经许可禁止转载! 0x01前言 当互联网爆出高危漏洞,或者团 ...
- 利用ngnix解决跨域问题
一,定义 跨域是指从一个域名的网页去请求另一个域名的资源,它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制.跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就 ...
- 华硕FX503V 安装ubuntu遇到问题解决
关机进bios,确保secure boot是关闭的,第一启动项设为带有uefi 的U盘,也就是ubuntu安装盘,F10保存退出; 接下来会进入grub界面,选择install ubuntu,不要按e ...