【问题标题】:C# - Convert UTF8 String into bits, modify bits, and convert back into UTF8 StringC# - 将 UTF8 字符串转换为位、修改位并转换回 UTF8 字符串
【发布时间】:2020-10-11 02:17:35
【问题描述】:

对于我正在处理的项目,我需要能够将 UTF8 字符串转换为位或字节以进行修改和返回。 (位/字节类型无关紧要.. '138' 或 '00000001' 或 '0A' - 只要我能够将其修改为字符串并将字节转换回字符串)

我尝试了一些方法,但没有任何效果。 在大多数情况下,我一直在尝试获取 File.ReadAllBytes(path) 的结果并将字节转换为可修改的字符串并返回,但没有任何成功。还尝试使用测试字符串到BitArray 中做同样的事情,但没有更好的运气。

这是我在一个更好的例子中尝试做的事情(伪代码)

string input = "ABC";

Byte[] bytes = StringToBytes(input);
Byte[] bytes2;

string bytestring;
foreach (Byte byte in bytes) {
    bytestring = byte.ToString();
    /// modify bytestring to the value of a different byte here ///
    bytes2.Add(bytestring.ToByte());
}

return BytesToString(bytes2);

返回:'ACD'(或其他)

【问题讨论】:

    标签: c# utf-8 encode


    【解决方案1】:

    如果您尝试将文件读入 byte[] 数组,修改这些字节并将其转换回字符串,您可以执行以下操作:

    // read the file into a byte array
    var bytes = File.ReadAllBytes(inputFileName);
    
    // modify the bytes
    
    // now convert back to a UTF string
    var stringFromByteArray = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
    

    【讨论】:

    • 是的,但是如何将每个字节修改为字符串?例如.. 如果 bytes[1] 是 '438' 我如何将其读取为字符串,将其转换为 say.. '111' 并再次将其保存为字节?
    • Ahm,一个字节值是0到255。它是一个byte数据类型。怎么可能是‘438’?
    • 老实说,我只是为示例输入了一个随机数
    • 如果您尝试修改 byte[] 值,只需使用 bytes[0] = (byte)128;。这会将十进制 128 转换为一个字节并将其分配给字节数组中的第一个字节。
    猜你喜欢
    • 2014-01-29
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    相关资源
    最近更新 更多