我的字符串包含字节(例如0x27),基本上我需要做的是将包含字节数据的字符串数组转换为byte
数据类型,然后我可以在{{1}中对其进行编码},所以它显示有意义的信息。
1个字符串数组包含:
0x37,0x32,0x2d,0x38,0x33,0x39,0x37,0x32,0x2d,0x30,0x31
我需要转换为字节数组,这可能吗?
我的代码是:
UTF8
感谢您的帮助。
答案 0 :(得分:6)
要说'字符串包含字节'可以用几种方式解释。您可以通过多种方式将字符串提取为字节。根据UTF8编码将字符串直接转换为字节:
var inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
其他编码当然也有类似的方法。
忽略上述
您的评论会改变问题的阅读方式!如果你的字符串只是十六进制(即字节没有编码到字符串中),只需从十六进制转换为整数。像......那样......
var b = Convert.ToUInt32(str.Substring(2), 16)
// For an array
var bytes = new byte[arrData.Length];
for(var i = 0; i < arrData.Length; i++) {
bytes[i] = (byte)Convert.ToUInt32(arrData[i].Substring(2), 16);
}
答案 1 :(得分:1)
如果您在char中有每个字节并且只想在不使用编码的情况下将其转换为字节数组,请使用;
string blip = "\x4A\x62";
byte[] blop = (from ch in blip select (byte)ch).ToArray();
如果您想立即使用UTF8编码进行转换,请使用
string blip = "\x4A\x62";
var blop = System.Text.Encoding.UTF8.GetBytes(blip);
答案 2 :(得分:1)
鉴于你的字符串是&#34; 0x37,0x32,0x2d,0x38,0x33,0x39,0x37,0x32,0x2d,0x30,0x31&#34;或类似的,您可以得到像这样的字节值;
string input = "0x37, 0x32, 0x2d, 0x38, 0x33, 0x39, 0x37, 0x32, 0x2d, 0x30, 0x31";
string[] bytes = input.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries);
byte[] values = new byte[bytes.Length];
for (int i = 0; i < bytes.Length; i++)
{
values[i] = byte.Parse(bytes[i].Substring(2,2), System.Globalization.NumberStyles.AllowHexSpecifier);
Console.WriteLine(string.Format("{0}", values[i]));
}
一旦你拥有它们,你需要将它们输入适当的编码器/解码器以获得字符串。
答案 3 :(得分:0)
您应该能够执行以下操作:
System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding();
byte[] bytes = encoding.GetBytes(str);