标签: octal

C 中字符串内的八进制表示

在给定的程序中:

int main() {
  char *p = "\0777";
  printf("%d %d %d\n",p[0],p[1],p[2]);
  printf("--%c-- --%c-- --%c--\n",p[0],p[1],p[2]);
  return 0;  
}
Run Code Online (Sandbox Code Playgroud)

它显示输出为:

63 55 0
--?-- --7-- ----

我可以理解它正在将\0 (\077)之后的前两个字符从八进制转换为十进制,但是谁能解释我为什么是 2 个字符,为什么不是 1 或 3 或任何其他字符?

请解释这背后的逻辑。

c octal number-systems

3
推荐指数
2
解决办法
1万
查看次数

十进制转换错误

我正在编写一个程序,将八进制数转换为小数.它编译正确和一切,但我的转换代码有一些重大错误.这对我来说似乎是完全合乎逻辑的,但不管怎样,当我运行程序时,转换是错误的(即1转换为36)有人可以指出出了什么问题?

 public static int convert(int octal)
{
    int d1=0,d2=0,d3=0,d4=0,d5=0,d6=0,d7=0,d8=0;

    if(octal >=9999999){
    d8 = (octal-(octal%10000000));}
    if(octal >=999999){
    d7 = (octal-(octal%1000000));}
    if(octal >=99999){
    d6 = (octal-(octal%100000));}
    if(octal >=9999){
    d5 = (octal-(octal%10000));}
    if(octal >= 999){
    d4 = (octal-(octal%1000));}
    if(octal >= 99){
    d3 = (octal-(octal%100));}
    if(octal >= 9){
    d2 = (octal-(octal%10));}
    if(octal >= 0){
    d1 = (octal-(octal%1));}


    octal = (d8 * 8^7) + (d7 * 8^6) + (d6 * 8^5) + (d5 * 8^4) + (d4 * 8^3) + (d3 * 8^2) + (d2 …
Run Code Online (Sandbox Code Playgroud)

java decimal octal

3
推荐指数
1
解决办法
719
查看次数

用C/C++打印整数

我有一个简单的程序.

#include <cstdio>
int main()
{
   int num = 000012345; printf("%d\n",num);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面的程序给出了5349.为什么?我的意思是它应该是错的,但为什么5349?

c c++ literals octal

3
推荐指数
1
解决办法
5048
查看次数

如何在 Bash 中强制对 printf 参数进行十进制解释而不是八进制

我正在使用 printf 在 bash 脚本中格式化数字

printf "%04d" $input   # four digits width with leading zeros if shorter
Run Code Online (Sandbox Code Playgroud)

如果input="011"printf 假定该值是八进制并返回0009而不是0011.

是否可以强制 printf 假设所有值都是十进制?

bash formatting printf decimal octal

3
推荐指数
1
解决办法
2090
查看次数

0o777 作为 mkdir 模式值的含义是什么?

我想mkdir在python中使用。

它有一个参数mode,其默认值为'0o777'

我知道0777Linux 中的文件模式。但是我不知道和o之间是什么。它是什么?0777

python literals octal

3
推荐指数
1
解决办法
5978
查看次数

将八位字节字符串转换为 Unicode 字符串,Python 3

我正在尝试使用 Python 3 将带有八进制转义 Unicode 的字符串转换回正确的 Unicode 字符串,如下所示:

\n\n

"training\\345\\256\\214\\346\\210\\220\\345\\276\\214.txt"是读入的字符串。

\n\n

"training\xe5\xae\x8c\xe6\x88\x90\xe5\xbe\x8c.txt"是我试图获取的字符串的实际表示形式。

\n\n

然而,在略读之后,似乎我能找到的 Python 3 的建议解决方案如下:

\n\n

decoded_string = bytes(myString, "utf-8").decode("unicode_escape")

\n\n

不幸的是,当应用于我的示例时,这似乎会产生错误的 Unicode 字符串:

\n\n

\'training\xc3\x83\xc2\xa5\xc3\x82\xc2\xae\xc3\x82\\x8c\xc3\x83\xc2\xa6\xc3\x82\\x88\xc3\x82\\x90\xc3\x83\xc2\xa5\xc3\x82\xc2\xbe\xc3\x82\\x8c.txt\'

\n\n

这对于字节文字以及 Python 2 来说似乎很容易做到,但不幸的是对于 Python 3 中的字符串似乎并不那么容易。非常感谢您的帮助,谢谢!:)

\n

string unicode octal python-3.x

3
推荐指数
1
解决办法
5036
查看次数

例如,在c ++中,setprecision(12)和setprecision(012)之间的区别是什么原因?

例如,在c ++编写setprecision(12)时,12是10的基数,但是当你像setprecision(012)那样写它时,它是一个八进制数,为什么?

c++ octal

2
推荐指数
2
解决办法
220
查看次数

长值,左边为0

为什么会出现这种情况

long value = 123450;
System.out.println("value: " + value); 
Run Code Online (Sandbox Code Playgroud)

价值:123450

 

long value = 0123450;
//           ^
System.out.println("value: " + value); 
Run Code Online (Sandbox Code Playgroud)

价值:42792

这是什么42792?

java octal long-integer

2
推荐指数
3
解决办法
1936
查看次数

对于base来说价值太大了(错误令牌是"08")bash

我在论坛上看到问题是我创建八进制而不是十进制,但我找不到在哪里更改我的代码来解决这个问题.

This is part of my code:
dd=1234567890aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ
ddate=$(exiv2 "${i}"|grep timestamp)
SPEC=$ddate
read X X YEAR MONTH DAY HOUR MINUTE SECOND <<<${SPEC//:/ }
d1=${YEAR:2}
d2=${dd:(MONTH-1):1}
d3=${dd:(DAY-1):1}
d4=${dd:(HOUR-1):1}
d5=${dd:(MINUTE-1):1}
d6=${dd:(SECOND-1):1}
d7=0
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!

string bash decimal octal

2
推荐指数
1
解决办法
4943
查看次数

如何在Swift中从八进制转换为十进制

嗨,我正在尝试将八进制数字快速转换为十进制。最简单的方法是什么?

octal swift

2
推荐指数
1
解决办法
740
查看次数