代码"abs(070000)"返回28672,但代码"abs(70000)"返回70000.
开头的零是否意味着该数字被解释为十六进制?
谢谢!
我正在尝试构建一个php函数并发现一些奇怪的行为,我甚至无法提出一个正确的问题,所以如果有人能解释发生了什么,我将不胜感激.
我正在使用带有前导零的一组数字,并且重要的是它们被维护,但用户几乎从不输入前导零.所以我用这个:
$x = 123;
$n = 5;
$x = str_pad((int)$x,$n,"0",STR_PAD_LEFT);
echo $x;
Run Code Online (Sandbox Code Playgroud)
并且,根据需要,这让我获得了成功.
当我测试用户在他们的号码之前输入零时,会发生奇怪的事情
$x = 0123;
$n = 5;
$x = str_pad((int)$x,$n,"0",STR_PAD_LEFT);
echo $x;
Run Code Online (Sandbox Code Playgroud)
这将返回00083.如果用户输入00123,则会发生同样的事情.
这个结果让我完全不知所措.提前感谢您对此处发生的事情的任何解释.
我正在尝试创建一个可以保存一天中的小时的数组,这样我就可以循环播放一个时钟.
我有:
int hourArray[24] = {12, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 01, 02,
03, 04, 05, 06, 07, 08, 09, 10, 11};
Run Code Online (Sandbox Code Playgroud)
我按顺序得到以下数字的错误08, 09, 08, 09.
它告诉我:
错误:八进制数字无效
我以前从来没有碰到这个,我想知道它是否有任何解决方法?
应该如何用C语言解析?
1000
Run Code Online (Sandbox Code Playgroud)
(如果八进制012*10 ^ 2)
要么
1200
Run Code Online (Sandbox Code Playgroud)
(如果整数为十进制)?
在 C++ 中,一个八进制数是通过在它前面加上一个0,来定义的,例如:
01 = 1
010 = 8
014 = 12
Run Code Online (Sandbox Code Playgroud)
所以我正在试验如何在 c++ 中使用 Base 8,并尝试使用循环添加它,如下所示:
int base8Number = 00;
for (int i = 01; i < 011; i+=01)
{
base8Number += i;
cout << base8Number << '\n';
}
Run Code Online (Sandbox Code Playgroud)
显然,C++ 不喜欢使用八进制数,我得到的输出如下:
1
3
6
10
15
21
28
36
Run Code Online (Sandbox Code Playgroud)
我知道它在 Base 8 中不起作用的最明显的原因是28结果输出,因为该8数字未在 Base 8 中使用。
所以,我的问题是:你可以在 c++ 中使用 Base 8,还是只是打算用作常量,如果你可以在 c++ 中使用 Base 8,你怎么做?
我可以轻松地将十进制数转换为八进制数,但我试图反过来做却被卡住了。
let decimal = 11_224_393
let octString = String(rawAddress, radix: 8, uppercase: false)
let octal = octString.toInt()
Run Code Online (Sandbox Code Playgroud)
我想要一个函数,它给定一个八进制数字的 Int 会将它作为八进制读入并将其转换为十进制
如:
// oct2dec(777) = 511
// oct2dec(10) = 8
func oct2dec(octal : Int) -> Int {
// what goes here?
}
Run Code Online (Sandbox Code Playgroud) 脚本:
$num = "00445790";
echo $num;
Run Code Online (Sandbox Code Playgroud)
收益:
00445790
Run Code Online (Sandbox Code Playgroud)
2.脚本
$num = 00445790;
echo $num;
Run Code Online (Sandbox Code Playgroud)
收益:
2351
Run Code Online (Sandbox Code Playgroud)
有人可以解释我为什么2351选择第二个脚本吗?
我看到一条评论说用 char 数组初始化"\001"会将 nul 作为第一个字符。我已经看到在哪里\0设置了一个nul。
未经编辑的评论:
字符输入[大小] = ""; 是足够的初始化。如果您已初始化 input[SIZE] = "\001"; while ( '\001' == input[0]) 不会执行您认为它正在执行的操作;(这会创建一个空字符串,其中第一个字符为 nul 字符。)
这个节目
#include <stdio.h>
#define SIZE 8
int main ( void) {
char input[SIZE] = "\001";
if ( '\001' == input[0]) {//also tried 1 == input[0]
printf ( "octal 1\n\n");
}
else {
printf ( "empty string\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在 Linux 上运行,使用 , 编译gcc,输出:
octal 1
Run Code Online (Sandbox Code Playgroud)
所以第一个字符是1而不是'\0'。
这是标准行为还是只是 …
我有一些带有前导零的简单数据,并且我想插入一些其他值。像这样:
$ printf "C011=4\nC015=8\n" | perl -ne '/C(\d\d\d)=(.*)/; $l{$1}=$2 }{ $l{13}=($l{15}-$l{11})/2+$l{11}; printf "C%03d=%f\n",$_,$l{$_} for keys %l;'
C011=4.000000
C013=0.000000
C015=8.000000
Run Code Online (Sandbox Code Playgroud)
好的。Perl的不匹配11,以011
在上面的简单情况下,您可能会想,嘿,不管怎样,让我们使用哈希键中的前导零进行算术运算:
$ printf "C011=4\nC015=8\n" | perl -ne '/C(\d\d\d)=(.*)/; $l{$1}=$2 }{ $l{013}=($l{015}-$l{011})/2+$l{011}; printf "C%03d=%f\n",$_,$l{$_} for keys %l;'
C011=4.000000
C011=0.000000
C015=8.000000
Run Code Online (Sandbox Code Playgroud)
在这里,我显然将字符串011(printf变为11)和八进制数字013(其printf变为11)作为关键字。并且011and 015值的查找仍然失败。
在perl中,有哪些选择可以避免将前导零(而不是9)解释为八进制的数字的行为?我希望哈希键具有其适当的十进制值。
我有一个解决方法。我只想看看它是否是最简洁的解决方案。像全局不这样做的东西,我从不使用八进制。
预期产量:
C011=4.000000
C013=6.000000
C015=8.000000
Run Code Online (Sandbox Code Playgroud) 我的代码的作用是:
现在我只想在从八进制转换为十进制时只允许 otcal 数字,如果数字不是八进制,则会发出错误消息。如何做到这一点?
#include <stdio.h>
#include <math.h>
int UmrechnungDezimalZuOktal(int dezimalzahl), UmrechnungOktalZuDezimal(int oktalzahl);
int main()
{
char auswahl;
int dezimalzahl, oktalzahl, nichtBeendet = 1, c;
while (nichtBeendet) {
printf("\n\n ################## AUSWAHL ##################\n"
" # #\n"
" # 1) Konvertierung Dezimal -> Oktal #\n"
" # 2) Konvertierung Oktal -> Dezimal #\n"
" # 3) Abbruch #\n"
" # #\n"
" ###############################################\n\n");
printf("Auswahl: ");
scanf("%c", &auswahl);
switch (auswahl) {
case '1': { /* Konvertierung Dezimal -> Oktal */ …Run Code Online (Sandbox Code Playgroud)