我有一个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字节[]转换为字符串?相关推荐

  1. python 字节字符串_Python字符串转换为字节,字节转换为字符串

    python 字节字符串 Python字符串到字节 (Python String to bytes) Python String to bytes conversion can be done in ...

  2. c++语言转换为字符串函数,C++中整型转换为字符串类型

    本文主要介绍C++语言中,整型转换为字符串类型的方法. 1 使用to_string函数 在c++11标准中,我们可以使用to_string函数,将整型转换为字符串类型. 1.1 to_string函数 ...

  3. php对象转换为字符串,php – 类的对象..无法转换为字符串

    我完成了我的第一堂课,但我无法将对象转换回字符串. class Cryption { var $data; var $salt; function __construct($data, $salt) ...

  4. html5将数组转换为字符串,js如何将数组元素转换为字符串

    数组转换为字符串代码实例-51前端 window.οnlοad=function(){ var mian=document.getElementById("mian"); var ...

  5. jquery html对象 转换成字符串,JQuery - 将'HTMLDivElement'对象数组转换为字符串

    我过滤页面上的元素,然后检查显示的项目数,如果少于一定数量,我想使用$ .get()加载更多项目.JQuery - 将'HTMLDivElement'对象数组转换为字符串 我正在使用同位素插件,它要求 ...

  6. python json转字符串_在python中将json转换为字符串

    一开始我没有清楚地解释我的问题.在python中将json转换为字符串时,请尝试使用str()和json.dumps(). >>> data = {'jsonKey': 'jsonV ...

  7. html标签转成字符串,将html标签和内容转换为字符串

    我的问题是我需要从event.content的结果创建一个字符串. Event.content返回一个包含html标签的条目.我可以像container.innerHTML = event.conte ...

  8. c 语言数组转换字符串,数组 – 将C字符数组转换为字符串

    C数组char name [8]作为元组导入Swift: (Int8, Int8, Int8, Int8, Int8, Int8, Int8, Int8) 名称的地址与名称[0]的地址相同,和 Swi ...

  9. mysql 二进制转字符串_将数据库的二进制转换为字符串

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. weblogic域,管理服务器,受管服务器,集群和机器的基本知识
  2. 【Python】调用百度云API文字识别服务 OCR
  3. 【转载】ogre内存管理
  4. 网站title实现切换
  5. Android Handler.removeCallbacksAndMessages(null)的作用
  6. 23 WM配置-策略-入库策略3-定义现有库存的附加策略I(Addition to Existing Stock Strategy)
  7. 阿里问题定位神器 Arthas 操作实践,定位线上BUG,超给力
  8. Linux基于升序链表的定时器
  9. python数据存储系列教程——python操作sqlite数据库:连接、增删查改、指令执行
  10. 在jquery中想要找到所以同辈元素方法_在jquery中siblings找到所有元素的同辈元素,是什么意思,有人可以给我详细讲解一下不?...
  11. IntelliJ IDEA中创建jsp项目
  12. 华为linux版本wifi驱动,华为随身wifi驱动
  13. 公差带与配合 常用基轴制公差带的相互关系
  14. C: warning: too many arguments for format [-Wformat-extra-args]
  15. 使用Excel TRIMMEAN忽略异常值
  16. JAVA入门:猜大小程序
  17. 微服务 杜家豪_搞好“微建设微服务”也是大业绩
  18. HDU4598 Difference(差分约束)
  19. 登录页面渗透测试思路与总结
  20. 在数学建模中微型计算机,“在数学建模中培养学生思维能力的研究”课题研究情况汇报...

热门文章

  1. IOS15打包动态库
  2. IOS开发之CALayer基本属性和使用
  3. 浙大计算机系学霸,国内三个“图灵班”,学霸中的尖子才能考得上,全是计算机人才!...
  4. 蓝牙配对码配置错误_安卓系统蓝牙配对流程分析
  5. 高速信号传输约翰逊 pdf_学习笔记之传输线基础
  6. java api文档_细说API – 文档和前后端协作
  7. Linux里的21的理解
  8. Linux 基础知识(九)
  9. 用SwiftGen管理UIImage等的String-based接口
  10. jquery页面滚动显示浮动菜单栏锚点定位效果