如何做到 byte[] 和 十六进制 互转?
咨询区
alextansc:
请问我如何实现将 byte[]
和 十六进制的string 进行互转?
回答区
balrob:
如果你的程序是基于 .NET5 的,可以使用 Convert 下新增的两个方法 ToHexString
和 FromHexString
,参考下面两个方法的定义。
//
// 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[] 和 十六进制 互转?相关推荐
- Delphi十进制和十六进制互转 Delphi 自带函数 IntToHex
Delphi十进制和十六进制互转 Delphi 自带函数 IntToHex 功能说明:该函数用于将"十进制"转换成"十六进制".该函数有二个参数.第一个参数为要 ...
- Java中byte[]与十六进制之间的转化
Java中byte是占8位二进制,十六进制的数是用4位二进制来表示的.因此当byte转十六进制时,将byte的8位二进制,分为高4位和低4位并分别转化为相应的十六进制,再合到一起即可.当十六进制转by ...
- byte[]与String互转对象和JSON相互转
byte[]与String互转 // String转byte[]String str = "110";byte[] src = str.getBytes();// byte[]转S ...
- Python二进制、八进制、十进制、十六进制互转示例
Python二进制.八进制.十进制.十六进制互转 在Python中各种进制的转换还是比较方便的,都有内置的方法 二进制 bin 八进制 oct 十六进制 hex 十进制 int 通过以上4个方法就可以 ...
- java-RGB与十六进制的互相转换 / 颜色十进制 / 十六进制 互转
一.java-RGB转换成十六进制 /*** rgb转换成16进制* @param r* @param g* @param b* @return*/ public String rgb2Hex(int ...
- C++ Byte转十六进制字符串输出
代码 例子一 typedef std::vector<unsigned char> bytes; std::string BytesToStr(const bytes& in) { ...
- Java类型转换工具类(十六进制—bytes互转、十进制—十六进制互转,String—Double互转)
/*** 数据类型转换工具类* @author cyf**/ public class NumConvertUtil{/*** bytes 转16进制字符串* @param bArray* @retu ...
- java byte与char互转原理_java byte与char互转原理
一.字节和unicode Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保存方式是使用字节流的.因此Java要对这些字节流经行转化. char是unicode的, ...
- char byte java_java byte与char互转原理-转 | 学步园
一.字节和unicode Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保存方式是使用字节流的.因此Java要对这些字节流经 行转化. char是unicode的 ...
最新文章
- 谁是 2021「IT 圈」年度 C 位?快来报名,彰显你的影响力!
- 使用结构、数组、循环和DataGridView写的分数统计小程序
- hive 的分隔符、orderby sort by distribute by的优化
- kibana一直弹出来报错?
- 32f407tim4时钟源频率_STM32学习笔记04—SysTick时钟
- Java如何跨语言调用Python/R训练的模型
- 《计算机组成原理》_学习笔记(二)
- 用扫地机器人楼下吵吗_扫地机器人到底好不好用?说说我两年的使用体验!
- 塘沽十三中2021年高考成绩查询,2020天津高考成绩查询
- www.12306.cn是安抚群众心灵的吧?
- Google无限容量网盘
- MultiSigWallet实例
- c/c++ sprintf sprintf_s
- 一、在GPU上执行运算
- R语言高维数据的pca、 t-SNE算法降维与可视化分析案例报告
- DataFrame中将空字符串替换为NaN
- HDFS文件系统内的文件格式转换(zip格式转化成gzip格式)
- java微信公众号开发之各种事件推送
- Python 字符串常见的语句,和练习题,字符串练习题 Python 切片函数修饰符 #精度和进制Python 字符串一些语句练课件练习题
- NYOJ - [第八届河南省程序设计大赛]引水工程(最小生成树)