标签: long-integer

将long转换为byte数组并将其添加到另一个数组

我想更改字节数组中的值以将长时间戳值放入MSB中.谁能告诉我最好的方法呢?我不想逐位插入值,我认为这是非常低效的.

long time = System.currentTimeMillis();
Long timeStamp = new Long(time);
byte[] bArray = new byte[128];
Run Code Online (Sandbox Code Playgroud)

我想要的是:

byte[0-63] = timeStamp.byteValue(); 
Run Code Online (Sandbox Code Playgroud)

这样的事情是可能的.在此字节数组中编辑/插入值的最佳方法是什么.因为byte是一个原始的我不认为有一些我可以使用的直接实现?

编辑:
似乎System.currentTimeMillis()比它更快Calendar.getTimeInMillis(),所以用它替换上面的代码.如果错误,请纠正我.

java bytearray type-conversion long-integer

50
推荐指数
2
解决办法
8万
查看次数

`long`保证至少为32位?

通过阅读C++标准,我一直都知道C++中的整数基本类型的大小如下:

sizeof(char) <= sizeof(short int) <= sizeof(int) <= sizeof(long int)
Run Code Online (Sandbox Code Playgroud)

我从3.9.1/2中推断出这个:

  1. 有四种带符号的整数类型:"signed char","short int","int"和"long int".在此列表中,每种类型至少提供与列表中前面的存储一样多的存储空间.简单的int具有执行环境的体系结构所建议的自然大小

此外,大小char由3.9.1 /描述为:

  1. [...]大到足以存储实现的基本字符集的任何成员.

1.7/1以更具体的术语定义:

  1. C++内存模型中的基本存储单元是字节.一个字节至少足以包含基本执行字符集的任何成员,并且由连续的位序列组成,其数量是实现定义的.

这导致我得出以下结论:

1 == sizeof(char) <= sizeof(short int) <= sizeof(int) <= sizeof(long int)
Run Code Online (Sandbox Code Playgroud)

where sizeof告诉我们这个类型的字节数.此外,它是实现定义的字节中有多少位.我们大多数人可能习惯于处理8位字节,但标准表示n字节中有位.


这篇文章中,Alf P. Steinbach说:

long保证(至少)32位.

根据标准,这一切都在我理解C++基本类型的大小面前.通常情况下,我只是将这句话视为初学者错误,但由于这是Alf,我认为值得进一步调查.

那么,你呢?标准长期保证至少为32位?如果是这样,请具体说明如何进行此保证.我只是没有看到它.

  1. C++标准特别指出,为了了解C++,你必须知道C(1.2/1)1

  2. C++标准隐含地定义了long可容纳的值的最小限制LONG_MIN- LONG_MAX 2

所以无论多大long,它都必须足够大才能将LONG_MIN保持为LONG_MAX.

但Alf和其他人特别指出,long必须至少为32位.这就是我想要建立的.C++标准明确指出一个字节中的位数没有指定(可能是4,8,16,42)那么连接如何能够容纳数字LONG_MIN-LONG_MAX至少为32位?


(1)1.2/1:以下参考文件对于本文件的应用是必不可少的.凡是注日期的引用文件,仅引用的版本适用.凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本标准.

  • ISO/IEC 2382(所有部分),信息技术 - 词汇
  • ISO/IEC 9899:1999,编程语言 - C.
  • ISO/IEC 10646-1:2000,信息技术 - 通用多八位字节编码字符集(UCS) - 第1部分:体系结构和基本多语言平面

(2)定义 …

c++ standards language-lawyer long-integer

50
推荐指数
5
解决办法
1万
查看次数

如何长期打印

我正在做一个接近PI的程序,我试图使用很长时间,但它不起作用.这是代码

#include<stdio.h>
#include<math.h>
typedef long long num;
main(){
    num pi;
    pi=0;
    num e, n;
    scanf("%d", &n);
    for(e=0; 1;e++){
      pi += ((pow((-1.0),e))/(2.0*e+1.0));
      if(e%n==0)
        printf("%15lld -> %1.16lld\n",e, 4*pi);
      //printf("%lld\n",4*pi);
    }
}
Run Code Online (Sandbox Code Playgroud)

c pi long-integer

49
推荐指数
2
解决办法
12万
查看次数

在Java中比较int和long是否可以

在Java中比较int和long是否可以...

long l = 800L
int i = 4

if (i < l) {
 // i is less than l
}
Run Code Online (Sandbox Code Playgroud)

java long-integer

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

NameError:未定义全局名称"long"

我有一个Python版本3.3.0,我不知道为什么它不让我为b和m做多久...我试着在这里查找答案,但没有任何帮助...谢谢

我得到一个错误说

NameError: global name 'long' is not defined


power = long(b) % long(m)
Run Code Online (Sandbox Code Playgroud)

nameerror python-3.x long-integer

49
推荐指数
1
解决办法
4万
查看次数

如何在java中将十六进制字符串转换为long?

我想在java中将十六进制字符串转换为long.

我尝试过一般转换.

String s = "4d0d08ada45f9dde1e99cad9";
long l = Long.valueOf(s).longValue();
System.out.println(l);
String ls = Long.toString(l);
Run Code Online (Sandbox Code Playgroud)

但我收到此错误消息:

java.lang.NumberFormatException: For input string: "4d0d08ada45f9dde1e99cad9"
Run Code Online (Sandbox Code Playgroud)

有没有办法在Java中将String转换为long?或者我在尝试哪种不可能!

谢谢!

java parsing hex long-integer

43
推荐指数
4
解决办法
8万
查看次数

将python long/int转换为固定大小的字节数组

我正在尝试在python中实现RC4和DH密钥交换.问题是我不知道如何将python long/int从密钥交换转换为RC4实现所需的字节数组.有没有一种简单的方法可以将long转换为所需的长度字节数组?

更新:忘了提到我正在处理的数字是768位无符号整数.

python bytearray diffie-hellman long-integer rc4-cipher

41
推荐指数
7
解决办法
8万
查看次数

如何在Rails应用程序中使用long id?

如何更改ActiveRecord ID的(默认)类型?int不够长,我宁愿长.令我感到惊讶的是,没有:迁移很久 - 是否只使用一些小数?

int activerecord ruby-on-rails bigint long-integer

38
推荐指数
5
解决办法
4万
查看次数

什么是C和C++中的1LL或2LL?

我正在研究Google Code Jam中的一些解决方案,有些人使用过我以前从未见过的东西.例如,

2LL*r+1LL
Run Code Online (Sandbox Code Playgroud)

2LL和1LL是什么意思?

他们的包括如下所示:

#include <math.h>
#include <algorithm>
#define _USE_MATH_DEFINES
Run Code Online (Sandbox Code Playgroud)

要么

#include <cmath>
Run Code Online (Sandbox Code Playgroud)

c c++ math cmath long-integer

38
推荐指数
1
解决办法
4万
查看次数

为什么这两个乘法运算会得到不同的结果?

为什么我需要添加"L"字母才能获得正确的长值?另一个价值是什么?

long oneYearWithL = 1000*60*60*24*365L;
long oneYearWithoutL = 1000*60*60*24*365;
System.out.println(oneYearWithL);//gives correct calculation result : 31536000000
System.out.println(oneYearWithoutL)//gives incorrect calculation result: 1471228928
Run Code Online (Sandbox Code Playgroud)

java int operation multiplication long-integer

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