如何将未符号字符转换为字符串

发布于 2025-01-22 19:02:11 字数 1427 浏览 5 评论 0原文

我正在使用 mbed tls ESP32板和我使用的功能仅采用未签名的char,并且还将无符号的char作为

  mbedtls_aes_setkey_enc( &aes, key, 256 );
  mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_ENCRYPT, 48, iv, input, output );

现在需要使用此方法显示输出的输出

Heltec.display->drawString(0, 0, String(output));

我 这里?还是有更好的方法显示输出(我使用的是带有0.96英寸显示屏的Heltec Lora32板),

这是完整的代码

#include "mbedtls/aes.h"
#include "heltec.h"

mbedtls_aes_context aes;

unsigned char key[32];
unsigned char iv[16];

unsigned char input [128];
unsigned char output[128];

size_t input_len = 40;
size_t output_len = 0;

void setup() {
  Heltec.display->init();
  Heltec.display->flipScreenVertically();
  Heltec.display->setFont(ArialMT_Plain_10);
  delay(1500);
  Heltec.display->clear();

  Heltec.display->drawString(0, 0, "Heltec.LoRa Initial success!");
  Heltec.display->display();
  delay(1000);

  mbedtls_aes_setkey_enc( &aes, key, 256 );
  mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_ENCRYPT, 48, iv, input, output );
  }

void loop() {
  Heltec.display->clear();
  Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
  Heltec.display->setFont(ArialMT_Plain_10);
  Heltec.display->drawString(0, 0, String(output);
  Heltec.display->display();
}

I am working with the Mbed TLS Library on an ESP32 board and a function i am using takes only unsigned char and also gives unsigned char as the output

  mbedtls_aes_setkey_enc( &aes, key, 256 );
  mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_ENCRYPT, 48, iv, input, output );

I now need to display output using this method

Heltec.display->drawString(0, 0, String(output));

but here it only takes strings type... how do i go about converting the unsigned char to string here? or is there a better way to display the output (I am using a Heltec LoRa32 board with a 0.96-inch display)

here is the full code

#include "mbedtls/aes.h"
#include "heltec.h"

mbedtls_aes_context aes;

unsigned char key[32];
unsigned char iv[16];

unsigned char input [128];
unsigned char output[128];

size_t input_len = 40;
size_t output_len = 0;

void setup() {
  Heltec.display->init();
  Heltec.display->flipScreenVertically();
  Heltec.display->setFont(ArialMT_Plain_10);
  delay(1500);
  Heltec.display->clear();

  Heltec.display->drawString(0, 0, "Heltec.LoRa Initial success!");
  Heltec.display->display();
  delay(1000);

  mbedtls_aes_setkey_enc( &aes, key, 256 );
  mbedtls_aes_crypt_cbc( &aes, MBEDTLS_AES_ENCRYPT, 48, iv, input, output );
  }

void loop() {
  Heltec.display->clear();
  Heltec.display->setTextAlignment(TEXT_ALIGN_LEFT);
  Heltec.display->setFont(ArialMT_Plain_10);
  Heltec.display->drawString(0, 0, String(output);
  Heltec.display->display();
}

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

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

发布评论

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

评论(1

梦在深巷 2025-01-29 19:02:11

mbedtls_aes_crypt_cbc具有“字符串”(未签名的char数组)为输入和输出,而不是一个字符:

mbedtls_aes_crypt_cbc (mbedtls_aes_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output)

绘图串将'string'(签名的char阵列)作为输入:

void U8X8::drawString(uint8_t x, uint8_t y, const char *s)

和您的output>输出 variable is char Array,所以所有都是char阵列是正确的(可能需要进行一些转换为签名的炭指针)。

您忘记了闭幕括号:

Heltec.display->drawString(0, 0, String(output));

当然,如果“字符串”是一种转换::)

应该足以:

Heltec.display->drawString(0, 0, (char*)(output));

好的评论是从雷米·勒博(Remy Lebeau) - 输出是一个扰乱的字节流,则没有任何意义上的打印(而是更好地显示为十六进制) )。

mbedtls_aes_crypt_cbc has 'strings' (unsigned char arrays) as input and output, not a single character:

mbedtls_aes_crypt_cbc (mbedtls_aes_context *ctx, int mode, size_t length, unsigned char iv[16], const unsigned char *input, unsigned char *output)

drawString takes 'string' (signed char array) as input:

void U8X8::drawString(uint8_t x, uint8_t y, const char *s)

and your output variable is char array, so all is correct (or some conversion to signed char pointer might be necessary).

You forgot closing parenthesis:

Heltec.display->drawString(0, 0, String(output));

of course if 'String' is a conversion :)

should be enough to:

Heltec.display->drawString(0, 0, (char*)(output));

Good comment is that from Remy Lebeau - output is a scrambled stream of bytes, there is no sense to print them (better display as HEX instead).

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