咨询区

  • alextansc

请问我如何实现将 byte[] 和 十六进制的string 进行互转?

回答区

  • balrob

如果你的程序是基于 .NET5 的,可以使用 Convert 下新增的两个方法 ToHexStringFromHexString ,参考下面两个方法的定义。

//
// Summary:
//     Converts an array of 8-bit unsigned integers to its equivalent string representation
//     that is encoded with uppercase hex characters.
//
// Parameters:
//   inArray:
//     An array of 8-bit unsigned integers.
//
// Returns:
//     The string representation in hex of the elements in inArray.
//
// Exceptions:
//   T:System.ArgumentNullException:
//     inArray is null.
//
//   T:System.ArgumentOutOfRangeException:
//     inArray is too large to be encoded.
public static string ToHexString(byte[] inArray);//
// Summary:
//     Converts the specified string, which encodes binary data as hex characters, to
//     an equivalent 8-bit unsigned integer array.
//
// Parameters:
//   s:
//     The string to convert.
//
// Returns:
//     An array of 8-bit unsigned integers that is equivalent to s.
//
// Exceptions:
//   T:System.ArgumentNullException:
//     s is null.
//
//   T:System.FormatException:
//     The length of s, is not zero or a multiple of 2.
//
//   T:System.FormatException:
//     The format of s is invalid. s contains a non-hex character.
public static byte[] FromHexString(string s);
  • Mykroft

在 W3cXsd2001 命名空间下有一个可以实现 byte[] 到 hex 之间的转换方法,我觉得可以满足你的需求,参考如下:

using System.Runtime.Remoting.Metadata.W3cXsd2001;public static byte[] GetStringToBytes(string value)
{SoapHexBinary shb = SoapHexBinary.Parse(value);return shb.Value;
}public static string GetBytesToString(byte[] value)
{SoapHexBinary shb = new SoapHexBinary(value);return shb.ToString();
}
  • Waleed Eissa

我最近刚好也遇到了这个问题,我是这么解决的。

byte[] bytes = {0, 1, 2, 4, 8, 16, 32, 64, 128, 256}
Console.WriteLine( BitConverter.ToString(bytes));

但用它性能会比较慢,所以基于它我做了一个版本优化,性能是它的8倍以上,参考如下:

private static string ByteArrayToHex(byte[] barray)
{char[] c = new char[barray.Length * 2];byte b;for (int i = 0; i < barray.Length; ++i){b = ((byte)(barray[i] >> 4));c[i * 2] = (char)(b > 9 ? b + 0x37 : b + 0x30);b = ((byte)(barray[i] & 0xF));c[i * 2 + 1] = (char)(b > 9 ? b + 0x37 : b + 0x30);}return new string(c);
}

点评区

没想到 .NET5 中已经有了 FromHexString,ToHexString 方法, Convert 类越来越强大了,工作效率看样子又可以提高了。

如何做到 byte[] 和 十六进制 互转?相关推荐

  1. Delphi十进制和十六进制互转 Delphi 自带函数 IntToHex

    Delphi十进制和十六进制互转 Delphi 自带函数 IntToHex 功能说明:该函数用于将"十进制"转换成"十六进制".该函数有二个参数.第一个参数为要 ...

  2. Java中byte[]与十六进制之间的转化

    Java中byte是占8位二进制,十六进制的数是用4位二进制来表示的.因此当byte转十六进制时,将byte的8位二进制,分为高4位和低4位并分别转化为相应的十六进制,再合到一起即可.当十六进制转by ...

  3. byte[]与String互转对象和JSON相互转

    byte[]与String互转 // String转byte[]String str = "110";byte[] src = str.getBytes();// byte[]转S ...

  4. Python二进制、八进制、十进制、十六进制互转示例

    Python二进制.八进制.十进制.十六进制互转 在Python中各种进制的转换还是比较方便的,都有内置的方法 二进制 bin 八进制 oct 十六进制 hex 十进制 int 通过以上4个方法就可以 ...

  5. java-RGB与十六进制的互相转换 / 颜色十进制 / 十六进制 互转

    一.java-RGB转换成十六进制 /*** rgb转换成16进制* @param r* @param g* @param b* @return*/ public String rgb2Hex(int ...

  6. C++ Byte转十六进制字符串输出

    代码 例子一 typedef std::vector<unsigned char> bytes; std::string BytesToStr(const bytes& in) { ...

  7. Java类型转换工具类(十六进制—bytes互转、十进制—十六进制互转,String—Double互转)

    /*** 数据类型转换工具类* @author cyf**/ public class NumConvertUtil{/*** bytes 转16进制字符串* @param bArray* @retu ...

  8. java byte与char互转原理_java byte与char互转原理

    一.字节和unicode Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保存方式是使用字节流的.因此Java要对这些字节流经行转化. char是unicode的, ...

  9. char byte java_java byte与char互转原理-转 | 学步园

    一.字节和unicode Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保存方式是使用字节流的.因此Java要对这些字节流经 行转化. char是unicode的 ...

最新文章

  1. 谁是 2021「IT 圈」年度 C 位?快来报名,彰显你的影响力!
  2. 使用结构、数组、循环和DataGridView写的分数统计小程序
  3. hive 的分隔符、orderby sort by distribute by的优化
  4. kibana一直弹出来报错?
  5. 32f407tim4时钟源频率_STM32学习笔记04—SysTick时钟
  6. Java如何跨语言调用Python/R训练的模型
  7. 《计算机组成原理》_学习笔记(二)
  8. 用扫地机器人楼下吵吗_扫地机器人到底好不好用?说说我两年的使用体验!
  9. 塘沽十三中2021年高考成绩查询,2020天津高考成绩查询
  10. www.12306.cn是安抚群众心灵的吧?
  11. Google无限容量网盘
  12. MultiSigWallet实例
  13. c/c++ sprintf sprintf_s
  14. 一、在GPU上执行运算
  15. R语言高维数据的pca、 t-SNE算法降维与可视化分析案例报告
  16. DataFrame中将空字符串替换为NaN
  17. HDFS文件系统内的文件格式转换(zip格式转化成gzip格式)
  18. java微信公众号开发之各种事件推送
  19. Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题
  20. NYOJ - [第八届河南省程序设计大赛]引水工程(最小生成树)

热门文章

  1. IOS Table中Cell的重用reuse机制分析
  2. C# 中静态调用C++dll 和C# 中动态调用C++dll
  3. iis 404错误从定向完美方案
  4. WCF从理论到实践(4):路在何方
  5. WebService C#开发/调用
  6. 11. IDEA 在同一工作空间创建多个项目
  7. jQuery.ajax实现根据不同的Content-Type做出不同的响应
  8. mac SecureCRT设置
  9. IOS原生地图与高德地图
  10. 在Ubuntu 11.10中将窗口按钮移回右侧