PHP 8进制数
一个011这样的数字会被理解成一个8进制数。我想让他表示11怎么办呢?这个数无论是用trim去掉0,还是转换成字符串都会变成9。85955389说的我不是非常懂。能稍微详...
一个 011 这样的数字 会被理解成 一个 8进制数。
我想让他 表示 11 怎么办呢?
这个 数 无论 是 用trim 去掉0, 还是转换成 字符串
都会变成 9。
85955389 说的我不是非常懂。能稍微详细点么。
天驴飞翔的方法 我知道,但是不是我想要的方法。
我需要的是 对于一个可能 在开头存在 0 的整型数 去掉0.
就是 不知道 他到底 是不是一个 这样的数。
实在不行的话退而求其次,怎么判断一个 整形数 采用的是几进制啊? 展开
我想让他 表示 11 怎么办呢?
这个 数 无论 是 用trim 去掉0, 还是转换成 字符串
都会变成 9。
85955389 说的我不是非常懂。能稍微详细点么。
天驴飞翔的方法 我知道,但是不是我想要的方法。
我需要的是 对于一个可能 在开头存在 0 的整型数 去掉0.
就是 不知道 他到底 是不是一个 这样的数。
实在不行的话退而求其次,怎么判断一个 整形数 采用的是几进制啊? 展开
展开全部
首先011这个数字常量困肢在计算机中是以二进制0000 1001(c编译器的存储形式) 0000 0000 0000 1001(C++编译器中的存储形式)
而十进制9在计算机中的表示方法与其完全相同,计算机操作011还是9实际上都是操作的二进制1001,因此是不会出现改变的。
计算机要想将011处理为11,那么必须取出011这个值,而任何神亏数值常量,不论是int还是double都是以二进制来存储并进行处理的,因此取出的011在计算机看来它是个二进制:0000 1001 而trim函数只能除去字符,对于这个二进制是无能为力的。
如果你想实现一个任务: 检测输入的一个数是几进制,可以参考一下程序:
#include <stdio.h>
#include<stdlib.h>
#define M 10
void main()
{
char value[M];
int i;
char c;
int x;
int flag=0;
char *pstr;
for(i=0;i<M-1;i++){
scanf("%c",&c);
if(c<48||(c>57 && c<65)||(c>69 && c<97)||c>101)
{
value[i]='\0';
break;
}
else
value[i]=c;
}
value[i]='\0';
if(value[0]=='0' && value[1]!='x' && value[1]!='X'){
printf("this a oct:\n");
for(i=1;value[i]!='\0';i++){
if(!(value[i]>47 && value[i]<56) )
{
printf("\nNo a standard value\n");
flag=1;
break;
}
}
if(flag==0){
pstr=&value[1];
x=atoi(pstr);
}
}
printf("%d\n",x);
}
上面是一个判断键盘输入是否为八进制,然后将其转化为整形输出。十六进制类似。
如果你只游尺神是想将输入的八进制数去掉0,那么直接可以用x=atoi("011"),则x中存储的就是十进制的11.
而十进制9在计算机中的表示方法与其完全相同,计算机操作011还是9实际上都是操作的二进制1001,因此是不会出现改变的。
计算机要想将011处理为11,那么必须取出011这个值,而任何神亏数值常量,不论是int还是double都是以二进制来存储并进行处理的,因此取出的011在计算机看来它是个二进制:0000 1001 而trim函数只能除去字符,对于这个二进制是无能为力的。
如果你想实现一个任务: 检测输入的一个数是几进制,可以参考一下程序:
#include <stdio.h>
#include<stdlib.h>
#define M 10
void main()
{
char value[M];
int i;
char c;
int x;
int flag=0;
char *pstr;
for(i=0;i<M-1;i++){
scanf("%c",&c);
if(c<48||(c>57 && c<65)||(c>69 && c<97)||c>101)
{
value[i]='\0';
break;
}
else
value[i]=c;
}
value[i]='\0';
if(value[0]=='0' && value[1]!='x' && value[1]!='X'){
printf("this a oct:\n");
for(i=1;value[i]!='\0';i++){
if(!(value[i]>47 && value[i]<56) )
{
printf("\nNo a standard value\n");
flag=1;
break;
}
}
if(flag==0){
pstr=&value[1];
x=atoi(pstr);
}
}
printf("%d\n",x);
}
上面是一个判断键盘输入是否为八进制,然后将其转化为整形输出。十六进制类似。
如果你只游尺神是想将输入的八进制数去掉0,那么直接可以用x=atoi("011"),则x中存储的就是十进制的11.
展开全部
可以用字符串格式化来改变 。
1 楼的你不提解决方法也就算了,哪来一通八竿子打不着边的言论?你是自己写的还是复制的?
$tmp = sprintf("%o",011);
echo($tmp);
试试去 。
也可以直接
printf("%o",011);
可懂?
你可以去仔细参考下 printf 的用法 。第一个参数是 format 。就是格式化字符 。第二个是需要被格式化的资源 。
参考文档你就会知道 %o 是将字符串转猛昌化蠢扰为 10 进制数 。所以你这个 011 自然就被顺理成章的转带知旦化为 11 了 。
1 楼的你不提解决方法也就算了,哪来一通八竿子打不着边的言论?你是自己写的还是复制的?
$tmp = sprintf("%o",011);
echo($tmp);
试试去 。
也可以直接
printf("%o",011);
可懂?
你可以去仔细参考下 printf 的用法 。第一个参数是 format 。就是格式化字符 。第二个是需要被格式化的资源 。
参考文档你就会知道 %o 是将字符串转猛昌化蠢扰为 10 进制数 。所以你这个 011 自然就被顺理成章的转带知旦化为 11 了 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询