c语言stringtohex简介
这篇文章告诉你关于C语言stringtohex和相应的知识点。希望对你有帮助,也别忘了收藏这个站点。
这篇文章的列表: 1.c如何将string转换成char* 2.设计一个程序,输入一个十进制整数,输出相应的十六进制数。设计一个函数实现数制转换。 3.C字符串转换成十六进制时不要用sprintf。 4、toHexString 如何将字符串转换成字符* 1.如果要将string转换成char*,可以使用string提供的函数c_str()或者函数data()。data返回不带终止符' \0 '的字符串内容,而c_str()返回以' \ 0 '结尾的字符数组。
2、const char * c _ str();
c_str()函数返回一个指向常规C字符串的指针,其内容与此字符串相同。
这是为了兼容C语言,C语言没有字符串类型,所以C中必须通过string类对象的成员函数c_str()将string对象转换成string样式。
注意:必须使用strcpy()函数来操作c_str()方法返回的指针。
例如,最好不要这样做:
char * c;
string s = " 1234
c = s . c _ str();//C最后指向的内容是垃圾,因为S对象被析构,其内容被处理。
应该这样用:
Char c设计一个程序,输入一个十进制整数,输出相应的十六进制数。设计一个函数实现数制转换。 //C语言实现:
# includestdio.h
void main()
{ char b[]= " 0123456789 abcdef ";
long int n,x;
int i,a[40];
printf("\n请输入n = ");
scanf("%ld ",n);
x = n;I = 0;
while(x0)
{a[i]=x;
x = x/16;
我;
}
while(i0)
{printf("%c ",b[a[I-1]]);
I-;
}
printf(" \ n ");
}
对于大数转换,可以使用以下程序:
#包含“Stdio.h”
#包含“Conio.h”
char结果[100];
int pos
void change(int * num);
int main(void)
{
字符串[100];
int num[100];
int bin[300]= { 0 };
int quot[100],residue = 0;
int i,j,k=0,后缀=0,索引= 0;
puts("输入一个小数:");
gets(str);
for(I = 0;伊斯特伦(str);num[i]=str[i]-48,I);
j = I-1;
而(j=0)
{
num[j]%2?(bin[k]= 1):(bin[k]= 0);
while(index=j)
{
残差= num[index];
如果(余数=2)
quot[后缀]=残数/2;
else if(索引)
quot[后缀]= 0;
残差=(num[index]% 2)* 10;
指数;
}
for(I = 0;isuffixnum[i]=quot[i],I);
j =后缀-1;
剩余=后缀=索引= 0;
}
for(I = 0;ik;change(bin i),I = 4);
for(I = pos-1;I = 0;printf("%c ",result[i]),I-);
getch();
返回0;
}
无效更改(int *num)
{
if(num[3]= = 0 num[2]= = 0 num[1]= = 0 num[0]= = 0)
sprintf(结果位置," %c "," 0 ");
if(num[3]= = 0 num[2]= = 0 num[1]= = 0 num[0]= = 1)
sprintf(结果位置," %c "," 1 ");
if(num[3]= = 0 num[2]= = 0 num[1]= = 1 num[0]= = 0)
sprintf(结果位置," %c "," 2 ");
if(num[3]= = 0 num[2]= = 0 num[1]= = 1 num[0]= = 1)
sprintf(结果位置," %c "," 3 ");
if(num[3]= = 0 num[2]= = 1 num[1]= = 0 num[0]= = 0)
sprintf(结果位置," %c "," 4 ");
if(num[3]= = 0 num[2]= = 1 num[1]= = 0 num[0]= = 1)
sprintf(结果位置," %c "," 5 ");
if(num[3]= = 0 num[2]= = 1 num[1]= = 1 num[0]= = 0)
sprintf(结果位置," %c "," 6 ");
if(num[3]= = 0 num[2]= = 1 num[1]= = 1 num[0]= = 1)
sprintf(结果位置," %c "," 7 ");
if(num[3]= = 1 num[2]= = 0 num[1]= = 0 num[0]= = 0)
sprintf(结果位置," %c "," 8 ");
if(num[3]= = 1 num[2]= = 0 num[1]= = 0 num[0]= = 1)
sprintf(结果位置," %c "," 9 ");
if(num[3]= = 1 num[2]= = 0 num[1]= = 1 num[0]= = 0)
sprintf(结果位置," %c ",' A ');
if(num[3]= = 1 num[2]= = 0 num[1]= = 1 num[0]= = 1)
sprintf(结果位置,“%c”,“B”);
if(num[3]= = 1 num[2]= = 1 num[1]= = 0 num[0]= = 0)
sprintf(结果位置," %c ",' C ');
if(num[3]= = 1 num[2]= = 1 num[1]= = 0 num[0]= = 1)
sprintf(结果位置," %c ",' D ');
if(num[3]= = 1 num[2]= = 1 num[1]= = 1 num[0]= = 0)
sprintf(结果位置," %c "," E ');
if(num[3]= = 1 num[2]= = 1 num[1]= = 1 num[0]= = 1)
sprintf(结果位置," %c "," F ');
pos
}
c字符串转换成十六进制,不要用sprintf。 void StringToHex(char *in,char *out)
{
int高,低;
while(*in)
{
高=(* in)4;
low =(* in)0xF;
*(out )=high9?高-10“a”:高“0”;
*(out )=low9?低-10“a”:低“0”;
在;
}
* out = ' \ 0
}
toHexString 修改了一个地方。
msg = " \ \ u " integer . tohexstring((int)chars[I]);“”是在它后面加上的。
msg = " \ \ u " integer . tohexstring((int)chars[I])" ";目的是方便划分字符串(用\\u划分字符串好像不行)。如果对这部分有异议,可以选择其他方法分弦。
增加了一个方法hexToString,用于将指定格式的句子恢复为原来的字符串...按照楼主题目的要求,就是把十六进制数恢复成“中华人民共和国(PRC)”。
公共类字符串{
静态字符串msg =
公共静态void main(String[] args) {
msg = to hex();
system . err . println(msg);
string result = hexto string(msg);
System.err.println(结果);
}
公共静态字符串tohex() {
String test = "中华人民共和国(PRC)";
char[]chars = test . tochararray();
for(int I = 0;i chars.lengthi ) {
//为了方便字符串分割,在每个十六进制数的末尾加一个空格。
msg = " \ \ u " integer . tohexstring((int)chars[I])" ";
}
返回msg
}
公共静态字符串hextoString(String msg) {
//下面三句用的是以空格为分隔符的正则表达式。
//获取每个“\\u”十六进制数字子串,并将其与strs数组一起保存。
花纹图案;
pattern = pattern . compile(" ");
string[]strs = pattern . split(msg);
char[]foreString = new char[strs . length];
字符串hexNum
for(int I = 0;i strs .长度;i ) {
hexNum = strs[i]。子串(2);//获取“\\u”后的十六进制数
int value = integer . parse int(hex num,16);//将其转换为十进制数
foreString[i] = (char)值;
}
返回新字符串(foreString);
}
}
stringtohex和C语言介绍到此结束。不知道你有没有从中找到你需要的信息?如果你想了解更多这方面的内容,记得关注这个网站。
最后更新于 2023-09-13 11:21:04 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章
- 学C语言或者C plus (C语言和C plus)
- C语言_u8(C语言编程软件)
- c语言中的Long(c语言中long类型的数据有多少字节)
- 嵌入式c语言笔测题(嵌入式c语言要求)
- 静态多线程c语言(java静态多线程)