This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/EK-TM4C1294XL:将16位字转换为十六进制?

Guru**** 2595805 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/964536/ccs-ek-tm4c1294xl-converting-a-16-bit-word-to-hex

器件型号:EK-TM4C1294XL

工具/软件:Code Composer Studio

我有许多16位字、我需要转换为十六进制 stings。

在宽开口处、我找到了这个小代码段。

char * Hex16Bit (int d)
{
char * out;

OUT=malloc (5);

OUT[0]="01234567890ABCDEF"[d>12];
OUT[1]="01234567890ABCDEF"[(d>>8)&0x0F];
OUT[2]="01234567890ABCDEF"[(d>>4)&0x0F];
OUT[3]="01234567890ABCDEF"[d & 0x0F];
OUT[4]='\0';

返回;
}

第一个问题是、CCS 似乎不知道 malloc!?

我缺少哪个#include?

更新:
我的堆容量设置得太高(80、000、000、仅有56k RAM 或剩余如此之多)。

已降至10、000、000、所有内容均已编译、但没有新的#include。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为什么不只是使用 sprintf ("%x")

    malloc()应该位于 stdlb.h 中 请记住,在使用完内存后,必须释放()内存。

    或者、我只会传入我分配的缓冲区。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您使用 TI ARM 编译器版本19.6.0.STS 或更高版本、则可以调用非标准 RTS 函数 ltoa。 类似的东西会起作用...

    char local_buffer[5];
    ltoa (value_to_convert、local_buffer、16);
    //字符位于 local_buffer 中*/ 

    请注意、函数 ltoa 不是 C 或 C++标准的一部分。  即使如此、许多编译器(包括 TI ARM 编译器)也支持该功能。   

    要了解为何不能将此建议的解决方案用于较旧版本的 TI ARM 编译器、请参阅 处理 ltoa 中的更改一文

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我现在已将我的过程重写为:

    void Hex16Bit (int d、char * a)
    {
    A[0]="01234567890ABCDEF"(d)>12];
    A[1]="01234567890ABCDEF"[(d>>8)& 0x0F];
    A[2]="01234567890ABCDEF"[(d>>4)& 0x0F];
    A[3]="01234567890ABCDEF"[d & 0x0F];
    A[4]='\0';
    }
    

    换句话说、我现在访问调用过程中的某个内容。

    我有的调用过程中

    char ' answer[5];
    
    //并稍后调用
    
    Hex16Bit (c、&ANSWER);
    
    

    编译器很高兴!

    但我可以访问的5字节存储器吗?

    或者只是一个蓝色的指针?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、这就是你想要做的。 请注意、您应该经常对此进行评论、因为未来的维护人员可能会暂时无法完成。 请注意、这是混淆 C 类比赛的常见原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Ja HV"]

    但我可以访问的5字节存储器吗?

    或者只是一个蓝色的指针?

    [/报价]

    它取决于您如何定义这个数组...

    [引用用户="Ja HV"]char' Answer[5];

    (顺便说一下、我认为单引号字符是一个拼写错误。  它不属于那里。)

    如果该数组是函数的局部数、则它会在函数结束时自动消失。  如果它是全局变量、则它始终可用于所有函数。  有关此主题的更多信息、请对  c local variables vs global 执行互联网搜索

    谢谢、此致、

    乔治