verilog 中的 ascii-hex 转换

发布于 2024-10-01 19:15:12 字数 362 浏览 7 评论 0原文

我正在寻找一个 Verilog 函数来将我的 ASCII 输入字符串转换为十六进制输出。我不确定是否可以用 C 语言完成并与 Verilog 结合使用。到目前为止,我能够使用以下方法将输入 ASCII 字符串打印为十六进制值:

printf("Hexadecimal Output for <CALL-ID>: ");
for(c = 0; c < strlen(callid); c++)
{
  printf("TO: %x ", callid[c]);
}

有没有办法将输出保存在文本/csv 文件中并使其可供我的 verilog 代码片段访问?

或者请告诉我 Verilog 本身是否有更简单的方法?

I was looking for a Verilog function to convert my ASCII input strings to hexadecimal output. I am not sure if I can do it in C and club it with Verilog. So far, I was able to print the input ASCII strings as hex values by using:

printf("Hexadecimal Output for <CALL-ID>: ");
for(c = 0; c < strlen(callid); c++)
{
  printf("TO: %x ", callid[c]);
}

Is there a way to save the output in a text/csv file and make it accessible to my verilog code snippet?

Or please let me know if there is an easier way in Verilog itself?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

趁年轻赶紧闹 2024-10-08 19:15:12

要输出到文本文件,您可以执行以下操作:

static int string_to_hex_file(const char *filename, const char *string)
{
    FILE            *out;
    const char      *s;

    if((out = fopen(filename, "w")) == NULL)
      return 0;

    fprintf(out, "\"%s\", ", string);
    for(s = string; *s; s++)
    {
        if(s != string)
            fprintf(out, ", ");
        fprintf(out, "0x%02x", (unsigned char) *s);
    }
    fprintf(out, "\n");

    fclose(out);
    return 1;
}

string == "this is a test" 的示例输出:

"this is a test", 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74

错误检查当然可以改进,并且您可能需要调整输出格式以满足您的需要。

To output to a text file, you could do something like this:

static int string_to_hex_file(const char *filename, const char *string)
{
    FILE            *out;
    const char      *s;

    if((out = fopen(filename, "w")) == NULL)
      return 0;

    fprintf(out, "\"%s\", ", string);
    for(s = string; *s; s++)
    {
        if(s != string)
            fprintf(out, ", ");
        fprintf(out, "0x%02x", (unsigned char) *s);
    }
    fprintf(out, "\n");

    fclose(out);
    return 1;
}

Sample output for string == "this is a test":

"this is a test", 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74

Error checking can of course be improved, and you will likely need to tweak the output formatting to suit your needs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文