为什么将PNG文件转换为ASCII字符串并将那些字节写入文件在C#中不起作用

问题描述 投票:0回答:1

How to write PNG file in c#

的问题不同

[我正在使用ReadAllBytes()读取文件,在文件周围添加一些字符串(听起来很傻,但是最终我将这些字符串用作标头,以便进行串行传输)。

但是,我的问题是,当我在另一端(最终将要接收此串行数据的那一端)以ASCII字符串读取数据时,我得到的数据与原始字节略有不同,这意味着当我编写此数据时对于PNG文件,只有90%的数据是正确的,这意味着整个文件不可用。我知道ASCII和二进制不是相同的,但是ASCII的长度是8位,并且由于从0到255的所有值都有一个ASCII值,所以为什么这不等于只将字节写入文件中,无论文件类型为PNG?

// Reading the data from a file
string fileName = @"C:\Users\Andy\Desktop\tinytest.png";
byte[] file = File.ReadAllBytes(fileName);
byte[] footer = Encoding.ASCII.GetBytes(footerString);
byte[] fileAndFooter = new byte[file.Length + footer.Length];
System.Buffer.BlockCopy(file, 0, fileAndFooter, 0, file.Length);
System.Buffer.BlockCopy(footer, 0, fileAndFooter, file.Length, footer.Length);

// Writing the data to a file after reading its ASCII interpretation
// (why isn't this the same as reading the bytes?)
string fandf = Encoding.ASCII.GetString(fileAndFooter);
int index = fandf.IndexOf(footerString);
string fileWithoutFooter = fandf.Substring(0, index);
ByteArrayToFile("dummyfilestrightthrough", Encoding.ASCII.GetBytes(fileWithoutFooter));

HexDump原始文件

89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
00 00 00 10 00 00 00 10 08 06 00 00 00 1F F3 FF
61 00 00 02 F5 49 44 41 54 78 DA 7D 93 59 48 94
51 14 C7 FF 77 BE 99 D1 C9 5D 49 CB CA 34 6D D4
34 97 32 C1 4A C5 32 0C 31 C3 52 7B B2 2C 8A C4
C2 30 8B 40 0C 5A 90 A2 87 0C 2C 21 83 30 C1 A8
84 22 A5 D4 CA 25 5B 50 51 C7 46 1D 1B 25 17 54
5C 98 D1 74 9C ED DB A6 CF 87 C6 34 EB 5C EE C3
B9 9C FB E3 70 EF EF 10 AC 88 C4 EA B0 A8 10 B7
F0 1C B9 8B D7 21 31 E1 44 66 9E 23 53 FA D9 DE
1E ED 8F A2 67 07 DF 57 AC AC 27 7F 26 69 6F E3
EE 9C 0F C9 BC EC E7 E0 04 3D 37 0E 03 B3 00 DA
C2 82 22 F6 D0 D2 0C 6A 87 14 AA B6 11 45 F8 E7
0C 15 FD 17 20 E5 75 F4 D5 9B 51 97 6E D8 49 A6
30 4B 8F 83 E7 29 70 C2 B9 91 67 61 64 CD 10 11
0A 44 64 8F A7 CA 4F CA B2 C4 9A D0 65 80 98 F2
E0 DD D9 11 A7 BF 44 7A 3A 63 DA 30 04 19 25 83
45 58 34 CF C1 CC 33 C2 E6 60 62 79 10 8A 60 5A
4F A3 BC B5 F1 6C 63 66 7B A9 15 70 B2 EA 48 75
76 64 42 92 C6 D4 01 27 A9 3B D6 50 CE 20 44 04
46 B8 C8 58 78 01 C4 42 C7 18 30 CF CD C1 22 A6
F0 BA AD 7B E0 45 5A 83 DC 0A C8 6B 3C 36 1C 23
77 DC 0C 8E 05 2F B4 4B A4 0B 60 69 5B B0 1C 81
89 A3 61 14 19 21 E2 1C 20 95 38 41 43 8D A2 A9
73 02 6F 8E 2A 89 15 90 FF F5 F8 A0 83 72 9D 8F
BB 24 10 C9 29 C9 A8 EE BC 0D D6 B7 19 C6 05 31
CC A2 05 78 8A A2 91 E0 71 1D 55 AF AA F0 B8 A2
04 6E 59 16 54 A5 B7 2F 01 B2 DF 1D 1D 31 D7 B3
5E 3A 95 1B 4E 64 A5 E3 D1 83 4A 04 9D 19 81 6B
B0 0E 52 66 3D 98 DA 78 F8 FB FB E1 49 69 05 BA
07 5B E0 99 6B 8F FA 53 8A 25 C0 E1 67 FB 9F EF
74 5D 9B 5E 99 A3 16 1E D0 09 33 93 73 D8 9A 4A
10 5F 68 83 C9 16 7B 74 5C 93 41 CF CC E1 E7 E8
2C 7C CE 51 30 C9 2D AA A6 8C AE 20 2B 60 D7 AD
88 BD 09 09 F2 4F 33 93 6A 28 1E D2 60 0D C0 EE
2B 76 70 D9 24 86 C1 48 A3 B5 D8 08 9D 1A D8 90
4A C1 71 8F 04 BD 75 A6 9C AE 82 EE 62 2B C0 BF
40 2E 0B F0 F2 AD 09 3F 40 62 B5 FA 09 C8 88 2D
0C E0 97 19 67 34 09 B9 1D C1 70 3B 8D 49 25 17
D6 7B A7 FB DB 32 91 82 F2 43 A2 63 E3 FD 9A CD
0E C3 20 AC 18 ED CD 7A 6C D9 67 83 C1 06 33 22
62 EC A0 13 3C 58 FC D2 FE 3A FA 4D 4F 61 4F D2
AA 2A C7 DF DD FF D2 2F 06 29 1A 83 66 A5 F2 E0
65 14 46 5B 04 1F 06 79 EF EF 45 3D 23 AB 02 02
F2 02 5D 83 C2 7C C7 A4 DB B4 B2 BE 0F F3 D6 02
1F A1 13 CD 30 87 A9 8F CC 45 F5 7D 55 D1 3F 87
69 31 B6 E7 ED 08 F3 0E 75 55 B0 81 33 82 50 04
BC 05 98 1F 60 A0 6D 66 EE A9 8B FB 72 FF 3B 8D
BF 23 F8 42 F8 46 38 D2 E5 12 0F C4 31 F3 98 A1
C7 90 D7 5F D2 5B B6 5A ED 2F 9C 0B 4A 20 5E 66
25 3B 00 00 00 00 49 45 4E 44 AE 42 60 82

HexDump“已接收”文件

3F 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
00 00 00 10 00 00 00 10 08 06 00 00 00 1F 3F 3F
61 00 00 02 3F 49 44 41 54 78 3F 7D 3F 59 48 3F
51 14 3F 3F 77 3F 3F 3F 3F 5D 49 3F 3F 34 6D 3F
34 3F 32 3F 4A 3F 32 0C 31 3F 52 7B 3F 2C 3F 3F
3F 30 3F 40 0C 5A 3F 3F 3F 0C 2C 21 3F 30 3F 3F
3F 22 3F 3F 3F 25 5B 50 51 3F 46 1D 1B 25 17 54
5C 3F 3F 74 3F 3F 3F 3F 3F 3F 3F 34 3F 5C 3F 3F
3F 3F 3F 3F 70 3F 3F 10 3F 3F 3F 3F 3F 3F 10 3F
3F 1C 3F 3F 3F 21 31 3F 44 66 3F 23 53 3F 3F 3F
1E 3F 3F 3F 67 07 3F 57 3F 3F 27 7F 26 69 6F 3F
3F 3F 0F 3F 3F 3F 3F 3F 04 3D 37 0E 03 3F 00 3F
3F 3F 22 3F 3F 3F 0C 6A 3F 14 3F 3F 11 45 3F 3F
0C 15 3F 17 20 3F 75 3F 3F 3F 51 3F 6E 3F 49 3F
30 4B 3F 3F 3F 29 70 3F 3F 3F 67 61 64 3F 10 11
0A 44 64 3F 3F 3F 4F 3F 3F 3F 3F 3F 65 3F 3F 3F
3F 3F 3F 11 3F 3F 44 7A 3A 63 3F 30 04 19 25 3F
45 58 34 3F 3F 3F 33 3F 3F 60 62 79 10 3F 60 5A
4F 3F 3F 3F 3F 6C 63 66 7B 3F 15 70 3F 3F 48 75
76 64 42 3F 3F 3F 01 27 3F 3B 3F 50 3F 20 44 04
46 3F 3F 58 78 01 3F 42 3F 18 30 3F 3F 3F 22 3F
3F 3F 3F 7B 3F 45 5A 3F 3F 0A 3F 6B 3C 36 1C 23
77 3F 0C 3F 05 2F 3F 4B 3F 0B 60 69 5B 3F 1C 3F
3F 3F 61 14 19 21 3F 1C 20 3F 38 41 43 3F 3F 3F
73 02 6F 3F 2A 3F 15 3F 3F 3F 3F 3F 3F 72 3F 3F
3F 24 10 3F 29 3F 3F 3F 3F 0D 3F 3F 19 3F 05 31
3F 3F 05 78 3F 3F 3F 3F 71 1D 55 3F 3F 3F 3F 3F
04 6E 59 16 54 3F 3F 2F 01 3F 3F 1D 1D 31 3F 3F
5E 3A 3F 1B 4E 64 3F 3F 3F 3F 4A 04 3F 19 3F 6B
3F 0E 52 66 3D 3F 3F 78 3F 3F 3F 3F 49 69 05 3F
07 5B 3F 3F 6B 3F 3F 53 3F 25 3F 3F 67 3F 3F 3F
74 5D 3F 5E 3F 3F 16 1E 3F 09 33 3F 73 3F 3F 4A
10 5F 68 3F 3F 16 7B 74 5C 3F 41 3F 3F 3F 3F 3F
2C 7C 3F 51 30 3F 2D 3F 3F 3F 3F 20 2B 60 3F 3F
3F 3F 09 09 3F 4F 33 3F 6A 28 1E 3F 60 0D 3F 3F
2B 76 70 3F 24 3F 3F 48 3F 3F 3F 08 3F 1A 3F 3F
4A 3F 71 3F 04 3F 75 3F 3F 3F 3F 3F 62 2B 3F 3F
40 2E 0B 3F 3F 3F 09 3F 40 62 3F 3F 09 3F 3F 2D
0C 3F 3F 19 67 34 09 3F 1D 3F 70 3B 3F 49 25 17
3F 7B 3F 3F 3F 32 3F 3F 3F 43 3F 63 3F 3F 3F 3F
0E 3F 20 3F 18 3F 3F 7A 6C 3F 67 3F 3F 06 33 22
62 3F 3F 13 3C 58 3F 3F 3F 3A 3F 4D 4F 61 4F 3F
3F 2A 3F 3F 3F 3F 3F 2F 06 29 1A 3F 66 3F 3F 3F
65 14 46 5B 04 1F 06 79 3F 3F 45 3D 23 3F 02 02
3F 02 5D 3F 3F 7C 3F 3F 3F 3F 3F 3F 0F 3F 3F 02
1F 3F 13 3F 30 3F 3F 3F 3F 45 3F 7D 55 3F 3F 3F
69 31 3F 3F 3F 08 3F 0E 75 55 3F 3F 33 3F 50 04
3F 05 3F 1F 60 3F 6D 66 3F 3F 3F 3F 72 3F 3B 3F
3F 23 3F 42 3F 46 38 3F 3F 12 0F 3F 31 3F 3F 3F
3F 3F 3F 5F 3F 5B 3F 5A 3F 2F 3F 0B 4A 20 5E 66
25 3B 00 00 00 00 49 45 4E 44 3F 42 60 3F
c# arrays serialization ascii endianness
1个回答
0
投票

您的问题是您将二进制值视为ASCII码

© www.soinside.com 2019 - 2024. All rights reserved.