转换一个十六进制字符在C#中的字节值 [英] Convert a single hex character to its byte value in C#

查看:226
本文介绍了转换一个十六进制字符在C#中的字节值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这会在1个十六进制字符转换为其整数值,但需要构建一个(分)字符串。

 转换。 ToInt32(serializedString.Substring(0,1),16); 



.NET是否有一个内置的方式,以一个十六进制字符转换为它字节(或INT ,无所谓),不涉及创建一个新的字符串值?


解决方案

  int值=0123456789ABCDEF.IndexOf(char.ToUpper(sourceString [指数])); 



甚至更快(减法与阵列搜索),但没有检查损坏的输入:

  INT HEXTOINT(CHAR hexChar)
{
hexChar = char.ToUpper(hexChar); //可能没有必要

返回(int)的hexChar&下; (int)的'A'?
((INT)hexChar - (INT)'0'):
10 +((INT)hexChar - (int)的'A');
}


This will convert 1 hex character to its integer value, but needs to construct a (sub) string.

Convert.ToInt32(serializedString.Substring(0,1), 16);

Does .NET have a built-in way to convert a single hex character to its byte (or int, doesn't matter) value that doesn't involve creating a new string?

解决方案

int value = "0123456789ABCDEF".IndexOf(char.ToUpper(sourceString[index]));

Or even faster (subtraction vs. array search), but no checking for bad input:

int HexToInt(char hexChar)
{
    hexChar = char.ToUpper(hexChar);  // may not be necessary

    return (int)hexChar < (int)'A' ?
        ((int)hexChar - (int)'0') :
        10 + ((int)hexChar - (int)'A');
}

这篇关于转换一个十六进制字符在C#中的字节值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆