C语言字符串转为16进制字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言字符串转为16进制字符串相关的知识,希望对你有一定的参考价值。

char* str = "我们";
现在想把“我们”对应的十六进制赋值给一个字符串,比如“我们”转换完后是"CE D2 C3 C7"
我想要的结果就是res = "CE D2 C3 C7";
怎么转换,谢谢了
这样我可以,但是怎么才能把结果保存到一个字符串中呢

/*

我们正在组建局域网

CE D2 C3 C7 D5 FD D4 DA D7 E9 BD A8 BE D6 D3 F2 CD F8

Press any key to continue

*/

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

char *Change(char *t,char *s) 
char i,chs;
for(i = 0; s[i]; ++i) 
chs = s[i] & 0X0F;
t[3 * i + 2] = ' ';
if(chs > 9) t[3 * i + 1] = chs - 10 + 'A';
else t[3 * i + 1] = chs + '0';
chs = (s[i] & 0XF0) >> 4;
if(chs > 9) t[3 * i] = chs - 10 + 'A';
else t[3 * i] = chs + '0';

t[3 * i] = '\\0';
return t;


int main() 
char *s = "我们正在组建局域网",t[60]; // 
printf("%s\\n",s);
printf("%s\\n",Change(t,s));
return 0;

参考技术A char* str = "我们";
char t[20];
sprintf(t, "%X %X %X %X\\n", str[0]&0xff,str[1]&0xff,str[2]&0xff,str[3]&0xff);

追答#include <stdio.h>

int main()

  int i;
char* str = "我们的爱";
char res[100];

  for (i = 0; i < strlen(str); i++)
  
   sprintf(res + 3*i, "%02X ", (unsigned char)str[i]);
  
  res[3*i - 1] = '\\0';

  // res 就是你要的结果: 
  printf("[%s]\\n", res);
  return 0;

本回答被提问者采纳
参考技术B http://wenku.baidu.com/view/31b1c242336c1eb91a375dc7.html
希望可以帮助到你
参考技术C char*t;
for(j=0;j<=i;j++)
t[j]=chj[i];
printf("%0X",t);
参考技术D #include<stdio.h>
void main()

char* str = "我们";

printf("%X %X %X %X\n",str[0]&0xff,str[1]&0xff,str[2]&0xff,str[3]&0xff);
追问

我知道printf可以,但是我不是要输出,我要保存到一个变量中

追答

char* str = "我们";

char res[256];
sprintf(res,"%X %X %X %X\n",str[0]&0xff,str[1]&0xff,str[2]&0xff,str[3]&0xff);

c语言输入数字转换成2进制字符串原理

一般在程序里面写成除二取余数的方法来得到。跟二进制的数的取法手工算法一样。
任意数除2以后,如果有小数点,就在堆栈中写进一个1,没有小数就写0。然后除完以后,把堆栈的数倒取出来,就成了该数字的二进制。

#include <iostream.h>
void divideData(const float number, int &integer, float &decimal); //分离出整数和小数部分.
void printBinaryForInteger(int &integer); //打印整数部分的二进制形式.
void printBinaryForDecimal(float &decimal); //打印小数部分的二进制形式.
int main()

float number;
int integer;
float decimal;

cout<<"Please input a decimal number for being converted: ";
cin>>number;
cout<<"\nThe binary number converted from your input "<<number<<" is: ";
divideData(number, integer, decimal);
printBinaryForInteger(integer);

if (integer==0) cout<<"0";
cout<<".";
printBinaryForDecimal(decimal);
cout<<endl;
return 1;

void divideData(const float number, int &integer, float &decimal)

integer = (int)number;
decimal = number - (float)integer;

void printBinaryForInteger(int &integer)

int k,a=0;
int b[32];
while (integer!=0)

k=integer%2;
b[a++]=k;
integer=integer/2;

while (a>0)

cout<<b[--a];


void printBinaryForDecimal(float &decimal)

int i=0;
int count=0;
int a[8]=0;
while (count<6) //小数部分取6位(也可用符号常量设置).

decimal*=2;
a[count++]=(int)decimal;
if (decimal>=1.0)
decimal-=1.0;

while (i<6)

cout<<a[i++];


//用于C编译器时略作修改;只考虑了输入数为正数.
参考技术A 一种方法是模拟人计算二进制的方法,另外一种是利用位运算的方法

以上是关于C语言字符串转为16进制字符串的主要内容,如果未能解决你的问题,请参考以下文章

php 如何将 16进制字符串转为16进制字符数组 或者将 2进制字符串转为16进制字符数组

c语言将十进制转为八进制字符串

c语言如何实现16进制字符串转换为 base64

c语言 输入16进制形式的字符串转换成16进制

C语言中字符串如何转换为二进制、八进制、十进制、十六进制

C语言将字符转为整数