请问如何用printf函数输出byte类型的数据?

huhu0013 2008-04-19 08:59:47


在程序中有一个byte类型的变量,

我想用prinft函数输出它的值。

像下面这样的代码:

byte bytABC = 27;

printf("the bytABC = %?", bytABC);

我想分别以2、8、10、16进制的格式输出bytABC,

请问应该怎么写printf函数的参数呢?



...全文
7254 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
接分是王道!
fibbery 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 SOMMERS 的回复:]
8楼的兄弟最实在啊,示例说明一下子就是铁证啊 ,就顶他了 啊 ,运行出现结果啊
[/Quote]
多谢!不过我的程序需要进一步完善的,只是一个转换的思路而已。
const std::string convert(const unsigned long l, const n)
{
unsigned long val=l;
std::stringstream ss;
do
{
int i=val%n;
if(i>9)
ss<<char(55+i);
else
ss<<i;
val/=n;
}while(val!=0);
std::string s=ss.str();
std::reverse(s.begin(),s.end());
return s;
}
Gangelwn 2008-04-20
  • 打赏
  • 举报
回复
不太懂哦。。。路过
SOMMERS 2008-04-20
  • 打赏
  • 举报
回复
8楼的兄弟最实在啊,示例说明一下子就是铁证啊 ,就顶他了 啊 ,运行出现结果啊
Maxwell 2008-04-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 huhu0013 的回复:]

to akirya:

不管什么类型的变量以8、10、16进制的格式输出,都是使用%o、%d、%x吗?

如比int、long类型等。
[/Quote]
_int64类型的不行,一般都会有扩展,VC中用%I64d输出int64,另外还有%u用来按照十进制输出无符号整数。
fibbery 2008-04-19
  • 打赏
  • 举报
回复
n进制转换
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>

const std::string convert(const long l, const n)
{
long val=l;
std::stringstream ss;
do
{
ss<<(val%n);
val/=n;
}while(val!=0);
std::string s=ss.str();
std::reverse(s.begin(),s.end());
return s;
}



int main(int argc, char * argvp[])
{
int i=128;
std::cout<<convert(i,16)<<std::endl;
std::cout<<convert(i,8)<<std::endl;
std::cout<<convert(i,2)<<std::endl;
std::cout<<convert(i,6)<<std::endl;
return 0;
}
rushman 2008-04-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huhu0013 的回复:]
不管什么类型的变量以8、10、16进制的格式输出,都是使用%o、%d、%x吗?

如比int、long类型等。
[/Quote]
%o、%d、%x决定输出格式,是不变的。
但是对调用参数还是有一定区别的。一般应该使调用参数和格式声明相匹配。
在这里,byte 和 int 不同,应该进行明确的类型转换。
byte bytABC = 27;
printf("%o %d %x", (int)bytABC , (int)bytABC , (int)bytABC );
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 huhu0013 的回复:]

~~~顶上~~~

to akirya:

不管什么类型的变量以8、10、16进制的格式输出,都是使用%o、%d、%x吗?

如比int、long类型等。
[/Quote]
必须是整形,浮点数不可以

要是64位的变量的话就不行了.
huhu0013 2008-04-19
  • 打赏
  • 举报
回复

~~~顶上~~~

to akirya:

不管什么类型的变量以8、10、16进制的格式输出,都是使用%o、%d、%x吗?

如比int、long类型等。
Yun0825 2008-04-19
  • 打赏
  • 举报
回复
long...
huhu0013 2008-04-19
  • 打赏
  • 举报
回复

to akirya:

不管什么类型的变量以8、10、16进制的格式输出,都是使用%o、%d、%x吗?

如比int、long类型等。

  • 打赏
  • 举报
回复
2进制的话用 ltoa 转化成字符串再输出
  • 打赏
  • 举报
回复
2进制的话你得转了

printf( "%o %d %x " , bytABC , bytABC ,bytABC );

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧