从字节转换为7位字节

时间:2009-09-29 10:08:54

标签: c# .net

我正在通过binaryReader将文件读取到一个字节数组但是我希望这个数组是7位而不是8我可以使用什么(utf7encoding)?                感谢。

3 个答案:

答案 0 :(得分:2)

像往常一样读取整个文件(使用二进制读取器),然后使用127读取所有值(从而剥离最高位)

像这样:

   value &= 127;  // Strip highest bit (effectively making it a 7 bit value)

答案 1 :(得分:1)

如果要读取用utf7字符集编码的文件,请不要使用BinaryReader。

尝试这样的方法(假设您的输入是行分隔的文本文件):

StreamReader reader = new StreamReader(@"InputFile.txt", System.Text.Encoding.UTF7);
string sLine;
while((sLine = reader.ReadLine()) != null)
{
// Process the line
}

答案 2 :(得分:1)

我猜你试图通过某种传输来推送二进制文件,这会将字节中的可用位限制为前7位。

如果肢体猜测结果正确,那么base64编码可能符合要求。例如,假设文件不大: -

var content = File.ReadAllBytes("c:\yourpath");
var base64Content = Convert.ToBase64String(content);
var base64Array = System.Text.Encoding.ASCII.GetBytes(base64Content);

如果文件很大,那么这种方法可以很容易地转换为基于流的方法,以便可以对文件的块进行编码。

当然,为了实现这一点,传输的另一端也需要能够解码Base64。