繁体   English   中英

字符串到原始字节数组

[英]String to raw byte array

我有一个包含二进制数据( 非文本数据 )的字符串。

如何将其转换为原始字节数组?

C#中的字符串 - 根据定义 - 不包含二进制数据。 它由一系列Unicode字符组成。


如果您的字符串仅包含ASCII(7位)字符集中的Unicode字符,则可以使用Encoding.ASCII将字符串转换为字节:

byte[] result = Encoding.ASCII.GetBytes(input);

如果您的字符串包含u0000-u00ff范围内的Unicode字符,并希望将它们解释为字节,则可以将字符转换为字节:

byte[] result = new byte[input.Length];
for (int i = 0; i < input.Length; i++)
{
    result[i] = (byte)input[i];
}

将二进制数据存储在字符串中是一个非常糟糕的主意。 但是,如果您绝对必须这样做,则可以使用1252代码页将二进制字符串转换为字节数组。 不要使用代码页0,否则在使用外语时会丢失一些值。 恰好,代码页1252正确地将所有字节值从0到255转换为Unicode并再次返回。

有一些写得不好的VB6程序使用二进制字符串。 不幸的是,有些代码行很多,几乎不可能一次性将它全部转换为byte()数组。

你被警告过了。 使用你自己的危险:

Dim bData() As Byte
Dim sData As String

'convert string binary to byte array
bData = System.Text.Encoding.GetEncoding(1252).GetBytes(sData)

'convert byte array to string binary
sData = System.Text.Encoding.GetEncoding(1252).GetString(bData)

这是一种方式:

public static byte[] StrToByteArray(string str)
{
  System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
  return encoding.GetBytes(str);
}
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] theBytes = encoding.GetBytes("Some String");

请注意,您可能还想使用其他编码格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM