C#数字、16进制字符串和字节之间互转

您所在的位置:网站首页 字节转化为十六进制 C#数字、16进制字符串和字节之间互转

C#数字、16进制字符串和字节之间互转

2024-04-05 21:55| 来源: 网络整理| 查看: 265

一个字节包含8个二进制位,一个十六进制可表示4个二进制位,所以,一个字节可以由2个十六进制表示

总结如下: (1)一个byte 对应两位十六进制位,而不是八位(32位二进制位); (2)转化为十六进制之后,不足两位的,高位要补零。

8位十六进制数占多少字节 比如0x12345678这是多少字节?

一位十六进制代表四位二进制,0x12345678转换成二进制就是0001-0010-0011-0100-0101-0110-0111- 1000而没八位二进制占一个字节,所以你 8位十六进制数占4字节

16进制中,两个字符是一个字节,一个字符的话,是一个字节。

例如:A是一个字节,AA是一个字节,AAA是两个字节,AAAA是两个字节。

不过,16进制能够出现的字符(不区分大小写)是:1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F

6e69 占用 两个字节

1、数字和字节之间互转 int num=12345; byte[] bytes=BitConverter.GetBytes(num);//将int32转换为字节数组 num=BitConverter.ToInt32(bytes,0);//将字节数组内容再转成int32类型 2、将字符串转为16进制字符,允许中文 private string StringToHexString(string s, Encoding encode) { byte[] b = encode.GetBytes(s);//按照指定编码将string编程字节数组 string result = string.Empty; for (int i = 0; i < b.Length; i++)//逐字节变为16进制字符 { result += Convert.ToString(b[i], 16); } return result; }

如:

///注意,一个中文转为utf-8占三个字节,英文占一个字节 System.Console.WriteLine(StringToHexString("中华人民共和国", System.Text.Encoding.UTF8));

或使用

BitConverter.ToString(Encoding.UTF8.GetBytes("中华人民共和国"))

返回结果为XX-XX-XX

然后再去掉”-“

3、将16进制字符串转为字符串 private string HexStringToString(string hs, Encoding encode) { string strTemp=""; byte[] b=new byte[hs.Length/2]; for (int i = 0; i < hs.Length / 2; i++) { strTemp = hs.Substring(i * 2, 2); b[i] = Convert.ToByte(strTemp, 16); } //按照指定编码将字节数组变为字符串 return encode.GetString(b); }

如:

string hexstring= StringToHexString("中华人民共和国", System.Text.Encoding.UTF8); string content=HexStringToString(hexstring, System.Text.Encoding.UTF8) 4、将byte[]转为16进制字符串 public static string byteToHexStr(byte[] bytes) { string returnStr = ""; if (bytes != null) { for (int i = 0; i < bytes.Length; i++) { returnStr += bytes[i].ToString("X2"); } } return returnStr; }

ToString("X2") 为C#中的字符串格式控制符

X为 十六进制 2为 每次都是两位数

比如 0x0A ,若没有2,就只会输出0xA 假设有两个数10和26,正常情况十六进制显示0xA、0x1A,这样看起来不整齐,为了好看,可以指定”X2”,这样显示出来就是:0x0A、0x1A

5、将16进制的字符串转为byte[] private static byte[] strToToHexByte(string hexString) { hexString = hexString.Replace(" ", ""); if ((hexString.Length % 2) != 0) hexString += " "; byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); return returnBytes; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3