16進値を入力テキストから文字列varに、またはその逆に保存するANSI C

LC22

テキストの16進数を文字列に保存する必要があります。

_____________________
Input: apple

Output: 6170706c65
_____________________

char * text = "apple";
char * hextext = convertToHex(text); // -> ?! I don't know how

printf("Hextext is %s\n", hextext); // -> Hextext is 6170706c65

そして

char * hextext = 6170706c65;
char * text = convertToText(hextext);

printf("Text is %s\n", text);

Printfを使用すると、%hxを使用するのは簡単ですが、変数の値が必要です。

誰か助けてもらえますか?ありがとう。


私の最終的なコード:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void convertToHex(char* input, char** output)
{
    char* ptr;
    int i;

    // Allocate memory for hex string
    *output = malloc(2 * strlen(input) + 1);

    // Initialize pointer to start of the output buffer
    ptr = *output;

    // Read each char in input. Use sprintf to append the 2 char hex value.
    // Finally advance the pointer 2 places in the output buffer.
    for(i=0; i<strlen(input); i++) 
    {
        sprintf(ptr, "%x", input[i]);
        ptr++; ptr++;
    }
}

void convertHexToString(char* input, char** output)
{
    char* ptr;
    int c;

    // Allocate memory for hex string
    *output = malloc(2 * (strlen(input)/2)%2==0 ? (strlen(input)/2) + 1 : (strlen(input)/2));

    // Initialize pointer to start of the output buffer
    ptr = *output;

    // Read two char in input. Use sprintf to append the char value.
    // Finally advance the input place in the output buffer.
    for (;input[0] && input[1] && sscanf(input, "%2x", &c); input += 2) 
    {
        sprintf(ptr, "%c", c);
        ptr++;
    }
}

int main(void)
{
    char* text = "apple";
    char* hexkey;
    char* strtext;

    convertToHex(text, &hexkey);

    printf("Input: %s\n", text);
    printf("Output: %s\n", hexkey);

    convertHexToString(hexkey, &strtext);

    printf("\nInput2: %s\n", hexkey);
    printf("Output2: %s\n", strtext);

    free(hexkey);
    free(strtext);

    return 0;
}

助けてくれたErikNedwidekに特に感謝します!

エリック・ネドワイドク

これが私が言及していたものです:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void convertToHex(char* input, char** output) {
  char* ptr;
  int i;

  // Allocate memory for hex string
  *output = malloc(2 * strlen(input) + 1);
  // Initialize pointer to start of the output buffer
  ptr = *output;

  // Read each char in input. Use sprintf to append the 2 char hex value.
  // Finally advance the pointer 2 places in the output buffer.
  for(i=0; i<strlen(input); i++) {
    sprintf(ptr, "%x", input[i]);
    ptr++; ptr++;
  }
}

int main(void) {
  char* text = "apple";
  char* hex;
  convertToHex(text, &hex);
  printf("Input: %s\n", text);
  printf("Output: %s\n", hex);

  free(hex);

  return 0;
}

出力は次のとおりです。

Input: apple 
Output: 6170706c65

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

cで文字列を16進数に、またはその逆に変換するにはどうすればよいですか?

分類Dev

カンマ区切りの16進値をテキストボックスに入力し、16進値として出力する方法c#

分類Dev

別の列(b)の値が別の列(c)で見つかった場合は、ある列(a)にテキストを入力します

分類Dev

C ++を使用して入力文字列の16進値を取得するにはどうすればよいですか?

分類Dev

文字ポインタの16進数を文字列に変換し、テキストファイルC ++に保存します

分類Dev

テキストボックスBとテキストボックスCの値から計算された値をテキストボックスAに入力するにはどうすればよいですか?

分類Dev

テキストボックスの入力からC#のシリアル経由で16進数を送信するまで

分類Dev

C ++で「文字の」文字列を16進数に変換する関数または式はありますか

分類Dev

cのchar入力から16進値を追加する

分類Dev

キューとリストのSTLを使用したC ++の割り当てに苦労しています。リストまたはキューにデータを入力してからそのデータを印刷するのに問題がある

分類Dev

入力した文字列をテキストボックスからc#の順序付きリストに表示するにはどうすればよいですか?

分類Dev

暗号化されたテキストをC#からC ++およびその逆に渡すことはできません

分類Dev

c#のテキスト(Json文字列)から日付形式を変更する方法(または長い文字列から日付値を取得する方法)

分類Dev

ANSI C:ユーザーからの入力をどのように取り込んで、それを逆に印刷しますか?

分類Dev

ユーザーがテキストボックスc#に単一の文字または数字を入力したかどうかを確認します

分類Dev

Javascriptで入力テキストを小文字から大文字に、またはその逆に変換する

分類Dev

カルチャ情報を動的に取得することにより、c#を使用して、Webチャットボットのテキストとしてユーザーから入力された文字列として来る日時をUTCに変換するにはどうすればよいですか?

分類Dev

Javaは16進文字列をJavaに変換します:char [](C)からbyte [](JAVA)

分類Dev

テキストファイルから列を読み取り、Cで別々の配列に保存する方法は?

分類Dev

Cの合計16のスペースに収まるように、char *文字列のテキストを動的に中央揃えにする方法は?

分類Dev

C ++ std :: hexはバイトの順序を逆にしますか?(10進数を16進数として出力)

分類Dev

Visual C#で文字列のテキストを逆方向に参照できますか?

分類Dev

C#テキストボックスの最初の入力値を上書きせずに、1つのテキストボックスで2つの入力テキストボックス値を取得することは可能ですか?

分類Dev

C ++-比較のためにテキストファイルから配列に値を取得する

分類Dev

JavaとC#:BigIntegerの16進文字列は異なる結果をもたらしますか?

分類Dev

Cの入力から16進数を読み取る方法は?

分類Dev

C#正規表現を使用して、入力テキストタグをその値のプレーンテキストに置き換える方法は?

分類Dev

C#16進文字列を10進に変換します。なぜ負の値ですか?

分類Dev

文字列c#linqのリストからテキストに文字列アイテムが含まれているかどうかを確認します

Related 関連記事

  1. 1

    cで文字列を16進数に、またはその逆に変換するにはどうすればよいですか?

  2. 2

    カンマ区切りの16進値をテキストボックスに入力し、16進値として出力する方法c#

  3. 3

    別の列(b)の値が別の列(c)で見つかった場合は、ある列(a)にテキストを入力します

  4. 4

    C ++を使用して入力文字列の16進値を取得するにはどうすればよいですか?

  5. 5

    文字ポインタの16進数を文字列に変換し、テキストファイルC ++に保存します

  6. 6

    テキストボックスBとテキストボックスCの値から計算された値をテキストボックスAに入力するにはどうすればよいですか?

  7. 7

    テキストボックスの入力からC#のシリアル経由で16進数を送信するまで

  8. 8

    C ++で「文字の」文字列を16進数に変換する関数または式はありますか

  9. 9

    cのchar入力から16進値を追加する

  10. 10

    キューとリストのSTLを使用したC ++の割り当てに苦労しています。リストまたはキューにデータを入力してからそのデータを印刷するのに問題がある

  11. 11

    入力した文字列をテキストボックスからc#の順序付きリストに表示するにはどうすればよいですか?

  12. 12

    暗号化されたテキストをC#からC ++およびその逆に渡すことはできません

  13. 13

    c#のテキスト(Json文字列)から日付形式を変更する方法(または長い文字列から日付値を取得する方法)

  14. 14

    ANSI C:ユーザーからの入力をどのように取り込んで、それを逆に印刷しますか?

  15. 15

    ユーザーがテキストボックスc#に単一の文字または数字を入力したかどうかを確認します

  16. 16

    Javascriptで入力テキストを小文字から大文字に、またはその逆に変換する

  17. 17

    カルチャ情報を動的に取得することにより、c#を使用して、Webチャットボットのテキストとしてユーザーから入力された文字列として来る日時をUTCに変換するにはどうすればよいですか?

  18. 18

    Javaは16進文字列をJavaに変換します:char [](C)からbyte [](JAVA)

  19. 19

    テキストファイルから列を読み取り、Cで別々の配列に保存する方法は?

  20. 20

    Cの合計16のスペースに収まるように、char *文字列のテキストを動的に中央揃えにする方法は?

  21. 21

    C ++ std :: hexはバイトの順序を逆にしますか?(10進数を16進数として出力)

  22. 22

    Visual C#で文字列のテキストを逆方向に参照できますか?

  23. 23

    C#テキストボックスの最初の入力値を上書きせずに、1つのテキストボックスで2つの入力テキストボックス値を取得することは可能ですか?

  24. 24

    C ++-比較のためにテキストファイルから配列に値を取得する

  25. 25

    JavaとC#:BigIntegerの16進文字列は異なる結果をもたらしますか?

  26. 26

    Cの入力から16進数を読み取る方法は?

  27. 27

    C#正規表現を使用して、入力テキストタグをその値のプレーンテキストに置き換える方法は?

  28. 28

    C#16進文字列を10進に変換します。なぜ負の値ですか?

  29. 29

    文字列c#linqのリストからテキストに文字列アイテムが含まれているかどうかを確認します

ホットタグ

アーカイブ