我对File.WriteAllBytes函数有些困惑。
实际上我是使用
从图像文件中读取的byte[] b = System.IO.File.ReadAllBytes(textBox1.Text);
然后我将读取的数据写回文本文件以查看其外观。
System.IO.File.WriteAllBytes(@"D:\abc.txt", b);
但abc.txt的内容不是纯二进制(1010110),但它们显示为: -
ëžÕwN±K>“ùIRA= I¥Dh﬒ȪEJ:³0Æî(A÷«3ÚÉid¤n•O<‰ - ª@ - ¢)cùY³Ö~K“TûËEÇóþ} WTN + 2 =£V * NÌ!\äji;â€?çŠ'ö€¬ç#μ:+ŠVÜ“©³Û?çù~VèÖ·ŠËSŠE7RH8} GJGfT?Ý?çüÿœÌÊR”6ÓŠY¬Š¬L§|n¹>÷'Ã''D{D ®tvE!3 **Ý×õ¨(¨qžO§ùÿ>Ó¥¤... K€@ N {ñM(ÊÅ€ŒRtj/²Æ¤¶¹RÁŽxqþÏó@KŒînçš~æ0C/-Ž1Mu>oÊ}é5(Q ¢i±pIôÀôÿ?çÒÂB-á.ãï©Ú}êB®æÇÌyÿ?çüU¥mã$“ã ,DiFQ¸'μ,ARGLäc¯4%ËŸÃœsŸóù~H3d,zŠ‡Ø................................ ........
二进制1和0是否转换为包含如此多符号的其他数字系统?
答案 0 :(得分:1)
文件中的每个字节由8位组成。当您使用ReadAllBytes
时,您会得到一组byte
个实例,其中每个byte
代表0
和255
之间的数字(包括)。人类可读的数字86的一个表示是01010110
。但是,当您使用WriteAllBytes
时,它会以原始格式写入字节序列。然后记事本加载文件并将每个字节显示为单个字符(或some encodings treating multiple bytes as a single character to display)。但是,如果您要将“01010110”写入文件以使记事本显示这些数字,您实际上最终会写入8个字节,而不是8个位,就像这样,其中每组8位代表数字'0'或'1':
00110000 00110001 00110000 00110001 00110000 00110001 00110001 00110000
答案 1 :(得分:1)