c语言 utf 8转字符串,如何将UTF-8字节[]转换为字符串?
我有一个byte[]数组,它是从一个我所知道的包含UTF-8的文件中加载的。 在一些调试代码中,我需要将其转换为字符串。 是否有一个班轮可以做到这一点?
在幕后 ,它应该只是一个分配和一个内存复制 ,因此即使未实现它也应该是可能的。
#1楼
string result = System.Text.Encoding.UTF8.GetString(byteArray);
#2楼
至少有四种不同的方式可以完成此转换。
编码的GetString
,但如果原始字节具有非ASCII字符,则将无法找回原始字节。
BitConverter.ToString
输出是一个以“-”分隔的字符串,但是没有.NET内置方法将字符串转换回字节数组。
Convert.ToBase64String
您可以使用Convert.FromBase64String轻松将输出字符串转换回字节数组。
注意:输出字符串可以包含“ +”,“ /”和“ =”。 如果要在URL中使用字符串,则需要对其进行显式编码。
HttpServerUtility.UrlTokenEncode
您可以使用HttpServerUtility.UrlTokenDecode轻松地将输出字符串转换回字节数组。 输出字符串已经是URL友好的了! 缺点是,如果您的项目不是Web项目,则需要System.Web程序集。
一个完整的例子:
byte[] bytes = { 130, 200, 234, 23 }; // A byte array contains non-ASCII (or non-readable) characters
string s1 = Encoding.UTF8.GetString(bytes); // ���
byte[] decBytes1 = Encoding.UTF8.GetBytes(s1); // decBytes1.Length == 10 !!
// decBytes1 not same as bytes
// Using UTF-8 or other Encoding object will get similar results
string s2 = BitConverter.ToString(bytes); // 82-C8-EA-17
String[] tempAry = s2.Split('-');
byte[] decBytes2 = new byte[tempAry.Length];
for (int i = 0; i < tempAry.Length; i++)
decBytes2[i] = Convert.ToByte(tempAry[i], 16);
// decBytes2 same as bytes
string s3 = Convert.ToBase64String(bytes); // gsjqFw==
byte[] decByte3 = Convert.FromBase64String(s3);
// decByte3 same as bytes
string s4 = HttpServerUtility.UrlTokenEncode(bytes); // gsjqFw2
byte[] decBytes4 = HttpServerUtility.UrlTokenDecode(s4);
// decBytes4 same as bytes
#3楼
定义:
public static string ConvertByteToString(this byte[] source)
{
return source != null ? System.Text.Encoding.UTF8.GetString(source) : null;
}
使用方法:
string result = input.ConvertByteToString();
#4楼
使用(byte)b.ToString("x2") ,输出b4b5dfe475e58b67
public static class Ext {
public static string ToHexString(this byte[] hex)
{
if (hex == null) return null;
if (hex.Length == 0) return string.Empty;
var s = new StringBuilder();
foreach (byte b in hex) {
s.Append(b.ToString("x2"));
}
return s.ToString();
}
public static byte[] ToHexBytes(this string hex)
{
if (hex == null) return null;
if (hex.Length == 0) return new byte[0];
int l = hex.Length / 2;
var b = new byte[l];
for (int i = 0; i < l; ++i) {
b[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
}
return b;
}
public static bool EqualsTo(this byte[] bytes, byte[] bytesToCompare)
{
if (bytes == null && bytesToCompare == null) return true; // ?
if (bytes == null || bytesToCompare == null) return false;
if (object.ReferenceEquals(bytes, bytesToCompare)) return true;
if (bytes.Length != bytesToCompare.Length) return false;
for (int i = 0; i < bytes.Length; ++i) {
if (bytes[i] != bytesToCompare[i]) return false;
}
return true;
}
}
#5楼
将byte[]转换为string似乎很简单,但是任何类型的编码都可能使输出字符串混乱。 这个小功能可以正常工作而不会产生任何意外结果:
private string ToString(byte[] bytes)
{
string response = string.Empty;
foreach (byte b in bytes)
response += (Char)b;
return response;
}
c语言 utf 8转字符串,如何将UTF-8字节[]转换为字符串?相关推荐
- python 字节字符串_Python字符串转换为字节,字节转换为字符串
python 字节字符串 Python字符串到字节 (Python String to bytes) Python String to bytes conversion can be done in ...
- c++语言转换为字符串函数,C++中整型转换为字符串类型
本文主要介绍C++语言中,整型转换为字符串类型的方法. 1 使用to_string函数 在c++11标准中,我们可以使用to_string函数,将整型转换为字符串类型. 1.1 to_string函数 ...
- php对象转换为字符串,php – 类的对象..无法转换为字符串
我完成了我的第一堂课,但我无法将对象转换回字符串. class Cryption { var $data; var $salt; function __construct($data, $salt) ...
- html5将数组转换为字符串,js如何将数组元素转换为字符串
数组转换为字符串代码实例-51前端 window.οnlοad=function(){ var mian=document.getElementById("mian"); var ...
- jquery html对象 转换成字符串,JQuery - 将'HTMLDivElement'对象数组转换为字符串
我过滤页面上的元素,然后检查显示的项目数,如果少于一定数量,我想使用$ .get()加载更多项目.JQuery - 将'HTMLDivElement'对象数组转换为字符串 我正在使用同位素插件,它要求 ...
- python json转字符串_在python中将json转换为字符串
一开始我没有清楚地解释我的问题.在python中将json转换为字符串时,请尝试使用str()和json.dumps(). >>> data = {'jsonKey': 'jsonV ...
- html标签转成字符串,将html标签和内容转换为字符串
我的问题是我需要从event.content的结果创建一个字符串. Event.content返回一个包含html标签的条目.我可以像container.innerHTML = event.conte ...
- c 语言数组转换字符串,数组 – 将C字符数组转换为字符串
C数组char name [8]作为元组导入Swift: (Int8, Int8, Int8, Int8, Int8, Int8, Int8, Int8) 名称的地址与名称[0]的地址相同,和 Swi ...
- mysql 二进制转字符串_将数据库的二进制转换为字符串
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
最新文章
- weblogic域,管理服务器,受管服务器,集群和机器的基本知识
- 【Python】调用百度云API文字识别服务 OCR
- 【转载】ogre内存管理
- 网站title实现切换
- Android Handler.removeCallbacksAndMessages(null)的作用
- 23 WM配置-策略-入库策略3-定义现有库存的附加策略I(Addition to Existing Stock Strategy)
- 阿里问题定位神器 Arthas 操作实践,定位线上BUG,超给力
- Linux基于升序链表的定时器
- python数据存储系列教程——python操作sqlite数据库:连接、增删查改、指令执行
- 在jquery中想要找到所以同辈元素方法_在jquery中siblings找到所有元素的同辈元素,是什么意思,有人可以给我详细讲解一下不?...
- IntelliJ IDEA中创建jsp项目
- 华为linux版本wifi驱动,华为随身wifi驱动
- 公差带与配合 常用基轴制公差带的相互关系
- C: warning: too many arguments for format [-Wformat-extra-args]
- 使用Excel TRIMMEAN忽略异常值
- JAVA入门:猜大小程序
- 微服务 杜家豪_搞好“微建设微服务”也是大业绩
- HDU4598 Difference(差分约束)
- 登录页面渗透测试思路与总结
- 在数学建模中微型计算机,“在数学建模中培养学生思维能力的研究”课题研究情况汇报...
热门文章
- IOS15打包动态库
- IOS开发之CALayer基本属性和使用
- 浙大计算机系学霸,国内三个“图灵班”,学霸中的尖子才能考得上,全是计算机人才!...
- 蓝牙配对码配置错误_安卓系统蓝牙配对流程分析
- 高速信号传输约翰逊 pdf_学习笔记之传输线基础
- java api文档_细说API – 文档和前后端协作
- Linux里的21的理解
- Linux 基础知识(九)
- 用SwiftGen管理UIImage等的String-based接口
- jquery页面滚动显示浮动菜单栏锚点定位效果