C语言字符转16进制输出的问题
我编了一个程序,按以下语句输出16进制:printf("%X",zjjg[i]);zjjg[8]char型数据。但是在输出后有些值是FFFFFFC0FFFFFF84FFF...
我编了一个程序,按以下语句输出16进制:
printf("%X ",zjjg[i]);
zjjg[8]char型数据。
但是在输出后有些值是FFFFFFC0 FFFFFF84 FFFFFF98 FFFFFF9A 我分析了一下,只要2进制第一位是1的数据前面都加了很多F,怎么才能把前面的F去掉啊。像这样:41 0 1E 39
for(i=0;i<8;i++)
{printf("%X ",zjjg[i]);} //zjjg[i])是存字符的数组
这是测试代码:
#include<stdio.h>
main()
{ int i;
char zjjg[]={"I 《"};
for(i=0;i<3;i++)
{printf("%X ",zjjg[i]);}
}
为什么"《"的16进制输出前面会多出了几个F啊 展开
printf("%X ",zjjg[i]);
zjjg[8]char型数据。
但是在输出后有些值是FFFFFFC0 FFFFFF84 FFFFFF98 FFFFFF9A 我分析了一下,只要2进制第一位是1的数据前面都加了很多F,怎么才能把前面的F去掉啊。像这样:41 0 1E 39
for(i=0;i<8;i++)
{printf("%X ",zjjg[i]);} //zjjg[i])是存字符的数组
这是测试代码:
#include<stdio.h>
main()
{ int i;
char zjjg[]={"I 《"};
for(i=0;i<3;i++)
{printf("%X ",zjjg[i]);}
}
为什么"《"的16进制输出前面会多出了几个F啊 展开
3个回答
展开全部
16进制第一个是1说明这是个负数,所以这些F是有意义的
用%d输出的话就是一个负数
你那个符号是汉字符号吧,汉字符号由两个两个char组成的
用%d输出的话就是一个负数
你那个符号是汉字符号吧,汉字符号由两个两个char组成的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
{printf("%X ", 0xff & zjjg[i]);}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询