字符串到字节数组

时间:2011-08-30 17:57:44

标签: c# c++ c delphi

我得到非常长的数据包,这些数据包都会记录到文本文件中。但有些我必须检查错误。 例子(很短的一个):

863900004400003708F72E0000003F2F0000001E2F0000008A2F000000632F000000AE2F000000D42A0000009323000000050000E7FD0700A861006087447E6F02C200608844359D0101A8613B04E0FF43040100009A999941010070420000C842000C005F5F5FC1EEF0FBE6EAE05F5F01020000000000000C00C3F0F3EFEFE05FD0E8F1EAE000FFDE070000B5000000A861661675447F6F02C2294C7744B540000100B54001000000000000000000000000C8420002020103DD07000026010000A861333375447F6F02C252487744B540000100B54001000000000000000000000000C84200020201037E0700002000012D043B0E0000003C0E0000003D0E000000320E000000050000C0C20500A861549B72447E6F02C28FF9AA44CEA9000100CEA901000000008041000048420000C842000900EBF3EAE0F15FEBF2F300010000000000000C00C1EEE3E85F5FD1ECE5F0F2E8D21000000000000000000000000000000000010000FF2E08000007000000A86100C09C440000C0C000C0AB440000

我需要一个在每个字节之间插入',0x'的应用程序,以便稍后我可以将它声明为静态数组。

问题是,如果我将其添加为字符串,编译器会给出错误,因为字符串太长。因此,如果你能帮助我用其中一种语言来做这件事我会很好:C / C ++,C#或Delphi。

3 个答案:

答案 0 :(得分:5)

您可以使用C#将字符串转换为字节数组:

byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(yourString);

答案 1 :(得分:2)

C#:

// get entire string
var contents = File.ReadAllText("filename.txt");
// convert every 2 digits 'AA' into ',0xAA'
contents = Regex.Replace(contents, "..", ",0x$0").Trim(',');
// output to another file
File.WriteAllText("filename2.txt");

答案 2 :(得分:0)

在C:

#include <stdio.h>

int main(int argc, char* argv[])
{
    int ch;
    while ((ch = getc(stdin)) != EOF) {
        if (isprint(ch)) {
            if (! isspace(ch)) {
                printf("0x%c", ch);
            } else {
                printf("[0x%X]", ch);
            }
        }
    }
    return 0;
}

要调用:

视窗:

type filename | program.exe

Unix的:

cat filename | ./program

空格,制表符,换行符和回车符号有所不同,因为您在努力中不可避免地会遇到它们。