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