我正在尝试将
UTF-8
转换为 base64
字符串。
示例:我在
UTF-8
中有“abcdef==”。它实际上是 base64
字符串的“表示”。
如何检索“abcdef==”
base64
字符串(请注意,我不想要来自UTF-8
的“abcdef==”“翻译”,我想获取用base64
编码的字符串,其中是“abcdef==”)。
编辑
由于我的问题似乎不清楚,这里有一个重新表述:
我的字节数组(假设我将其命名为 A)由
base64
字符串表示。将 A 转换为 base64
给出“abcdef==”。
此字符串表示形式通过 UTF-8 中的套接字发送(请注意,UTF-8 和 base64 中的字符串表示形式完全相同)。因此,我收到一条 UTF-8 消息,其中包含 UTF-8 格式的“whatever/abcdef==/whatever”。
所以我需要从这个套接字消息中检索base64“abcedf==”字符串才能获得A。
我希望这更清楚!
说出您想要实现的目标有点困难,但假设您正在尝试获取一个 Base64 字符串,当 decoded 为
abcdef==
时,以下应该可以工作:
byte[] bytes = Encoding.UTF8.GetBytes("abcdef==");
string base64 = Convert.ToBase64String(bytes);
Console.WriteLine(base64);
这将输出:
YWJjZGVmPT0=
,这是用 Base64 编码的 abcdef==
。
编辑:
要解码 Base64 字符串,只需使用
Convert.FromBase64String()
。例如
string base64 = "YWJjZGVmPT0=";
byte[] bytes = Convert.FromBase64String(base64);
此时,
bytes
将是 byte[]
(不是 string
)。如果我们知道字节数组表示 UTF8 中的字符串,那么可以使用以下方法将其转换回字符串形式:
string str = Encoding.UTF8.GetString(bytes);
Console.WriteLine(str);
这将输出原始输入字符串,在本例中为
abcdef==
。
G内容长度:41481
--00000000000018f0100608950d4a 内容类型:文本/纯文本;字符集=“UTF-8”;格式=流动; delsp=是 内容传输编码:base64
RmxveWRvbG9neQ0KDQoNCg0KDQoNCg0K4oCcVGhlIERhcmsgU2lkZSBvZiB0aGUgTW9vbiIgaXMg YSBtZXNTZXJpemluZyBibGVuZCBvZiBwcm9ncmVzc2l2ZSByb2NrIGFuZCAgDQpwc3ljaGVkZWxp YSwgcHVzaGluZyB0aGUGYm91bmRhcmllcyBvZiBtdXNpYy4gSXRzIHByb2ZvdW5kIGV4cGxvcmF0 aW9uIG9mICANmh1bWFuIGV4cGVyaWVuY2UsIHRpbWUSIGFuZCBtZW50YWwgaGVhbHRoIHJlc29u YXRlcyB3aXRoIGxpc3RlbmVycyB0aHJvdWdoICANnRyYWNrcyBsaWtlICJUaW1lIiBhbmQgIk1v bmV5LiIgV2l0aCB0aG91Z2h0LXByb3Zva2luZyBseXJpY3MgYW5kIGVuZHVyaW5nICANCmFwcGVh bCwgaXQgaGFzIGJLY29tZSBhIHRpbWVsZXNzIGNsYXNzaWMuIFRoZSBhbGJ1bSdzIGNoYXJ0IHN1 Y2Nlc3MgYW5kICANcmdsb2JhbCBzYWxlcyBoYXZlIHNvbGlkaWZpZWQgaXRzIHBvc2l0aW9uIGFz IG9uZSBvZiB0aGUgZ3JlYXRlc3QgYWxidW1zIGLUICANCmhpc3RvcnkuIEZvciBtZSwgaXQgaXMg dGhlIHBpbm5hY2xLIG9mIFBpbmsgRmxveWQncyBkaXNjb2dyYXBoeS4gV2hhdCBhYm91dCAgDQp5 b3U/IFdoaWNoIFBpbmsgRmxveWQgYWxidW0gaXMgeW91ciBwZXJzb25hbCBtYXN0ZXJwaWVjZT8N Cg0KDQonCKZyb206IEphcmR5IFNhbmRlcnMNCg0KDQonCLJFQUQgTU9SRQ0KDQoNCg0KDQoNCg0K Q29tcGxldGUgWW91ciBURFNPVE0gY29sbGVjdGlvbg0KDQoNCg0KDQonNCkRhcmsgU2lkZSBPZiBU aGUgTW9vbiA1MHRoIEFuaXZlcnNhcnkgUnVnDQoNCg0KDQpCVVkgTk9XDQoNCg0KDQoNCg0KDQpE YXJrIFNpZGUgT2YgVGhlIE1vb24gNTB0aCBBbm5pdmVyc2FyeSBQaW5rIEZsb3lkIFR1bWJsZXIN Cg0KDQonNCkJVWSBOT1cNCg0KDQoNCg0KDQoNCkRTT1RNIDUwdGggQW5uaXZlcnNhcnkgMTk3My0y MDIzIFNpZ25hdHVyZXMgVmVsdmV0ZWVuIFBsdXNoIEJsYW5rZXQNCg0KDQonNCkJVWSBOT1cNCg0K DQoNCg0KDQoNCLREU29UTSA1MHRoIEFubml2ZXJzYXJ5IFRzaGlydCBIb29kaWUgU3dlyXRzaGly DA0KDQoNCg0KQlVZIE5PVw0KDQoNCg0KDQoNCg0KTmV3IEFycml2YWxzDQoNCldhbGwgQXJ0SG9t ZSBEZWNvcg0KDQpDbG90aGluZ0NhciBBY2Nlc3Nvmllcw0KDQonNCkNvcHlyaWdodCDCqSAyMDIw IFBpbmsgRmxveWQgKDE5ODcpIEx0ZC4gVW5kZXIgbGljZW5zZSB0byBQZXJyeXNjb3BlICANClBy b2R1Y3Rpb25zIExMQy4NClBJTksgRkxPWUTCriBpcyBhIHJlZ2lzdGVyZWQgdHJhZGVtYXJrIG9m IFBpbmsgRmxveWQgKDE5ODcpIEx0ZC4NCg0KDQoNCg0KV2FudCB0byBjaGFuZ2UgaG93IHlvdSBy ZWNlaXZliHRoZXNlIGVtYWlscz8NCllvdSBjYW4gdXBkYXRlIHlvdXIgcHJlZmVyZW5jZXMgb3Ig dW5zdWJzY3JpYmUNCg0KDQoNCg0KDQo= --00000000000018f0100608950d4a