当前位置:  开发笔记 > 编程语言 > 正文

C#将字符串转换为其byte []等价物

如何解决《C#将字符串转换为其byte[]等价物》经验,为你挑选了3个好方法。

在这一点上,大多数人都会想到"这会发病啊......"

byte[] dataB= System.Text.Encoding.ASCII.GetBytes(data);

但是..我遇到的问题是我需要字节的确切值,没有编码只是每个字节的纯值.例如,如果字符串的值是(0xFF32),我希望它也将它转换为{255,50}.他的理由是我有一个文件格式我试图读取哪些存储int作为字节保存它们然后在程序打开时读取它们.

这是我到目前为止:

...
dialog.InitialDirectory =
    Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop) +
    "/Test";

dialog.Title="Open File";

if (dialog.ShowDialog(this) == DialogResult.OK)
{
    StreamReader reader = new StreamReader(dialog.FileName);
    string data = reader.ReadToEnd();
    reader.Close();
    byte[] fileC = System.Text.Encoding.ASCII.GetBytes(data);
    File_Read(dialog.FileName,fileC);
}
...

因此,当我尝试读取文件时,它会将0xFF的文件修改为0x3F,因为0xFF大于127且0x3F是?

对不起,如果我看起来有点混乱:)

谢谢,迈克尔



1> Jon Skeet..:

问题在于您的入门方法:

我需要没有编码的字节的确切值

...

例如,如果字符串的值是(0xFF32)

这有点像看油画并说,"我想要那张图片的字节,没有编码." 这没有意义.文本与二进制数据不同.一旦理解了这一点,就很容易找到问题的根源.你真正想要的是作为字节数组的文件的内容.这很简单,因为文件是二进制数据!如果它不是真正的文本,你不应该首先把它作为文本阅读.幸运的是,.NET使这很容易:

byte[] fileC = File.ReadAllBytes(dialog.FileName);



2> Konrad Rudol..:

但是..我遇到的问题是我需要字节的确切值,没有编码只是每个字节的纯值.

然后用这个:

byte[] dataB = System.Text.Encoding.Unicode.GetBytes(data);

它返回由.NET字符串内部存储的字节.

但所有这些都是codswallop:字符串总是链接到特定的编码,并且没有办法绕过它.如果文件包含无效的Unicode代码序列(可能发生)或通过规范化,上述操作将失败.因为你显然不想要一个string,所以不要读一个.请将文件读取为二进制数据.



3> Atif Mahmood..:

//将字符串转换为字节数组

public static byte[] StrToByteArray(string str)
{
    System.Text.UTF8Encoding  encoding=new System.Text.UTF8Encoding();
    return encoding.GetBytes(str);
}

//将字节数组转换为字符串

public string ByteArrayToStr(byte [] dBytes)
{
System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
return enc.GetString(dBytes);
}

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有