2009-09-29 91 views
0

我正在通过binaryReader读取文件到一个字节数组,但我想这个数组是7位而不是8我可以使用什么(utf7encoding)? 谢谢。从字节转换为7位字节

+0

你需要一个由7位字节组成的数组吗? – rahul 2009-09-29 10:10:17

+0

如果输入字节是129,输出应该是什么? – 2009-09-29 10:15:24

+3

要了解正确答案应该是什么,如果告诉我们为什么需要7位编码会有所帮助? – AnthonyWJones 2009-09-29 10:39:54

回答

1

我要猜你是想通过一些运输这限制了AB可用位来推一个二进制文件yte只是第一个7.

如果肢体猜测是正确的,那么base64编码可能适合账单。例如假定该文件不是巨大的: -

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

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

当然,为了这个工作,传输的另一端也需要能够解码Base64。

1

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

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

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

只是读取整个文件如常(与BinaryReader在),然后和所有与127的值(从而剥夺了最高位)

像这样:

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

这应该没问题,那种数据丢失在应用程序中是可以接受的。 IOW,那些最高位如果设置不需要并且可以被丢弃。 – AnthonyWJones 2009-09-29 10:48:30