我想更改字节数组中的值以将长时间戳值放入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()
,所以用它替换上面的代码.如果错误,请纠正我.
通过阅读C++标准,我一直都知道C++中的整数基本类型的大小如下:
sizeof(char) <= sizeof(short int) <= sizeof(int) <= sizeof(long int)
Run Code Online (Sandbox Code Playgroud)
我从3.9.1/2中推断出这个:
- 有四种带符号的整数类型:"signed char","short int","int"和"long int".在此列表中,每种类型至少提供与列表中前面的存储一样多的存储空间.简单的int具有执行环境的体系结构所建议的自然大小
此外,大小char
由3.9.1 /描述为:
- [...]大到足以存储实现的基本字符集的任何成员.
1.7/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位?如果是这样,请具体说明如何进行此保证.我只是没有看到它.
C++标准特别指出,为了了解C++,你必须知道C(1.2/1)1
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:以下参考文件对于本文件的应用是必不可少的.凡是注日期的引用文件,仅引用的版本适用.凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本标准.
(2)定义 …
我正在做一个接近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) 在Java中比较int和long是否可以...
long l = 800L
int i = 4
if (i < l) {
// i is less than l
}
Run Code Online (Sandbox Code Playgroud) 我有一个Python版本3.3.0,我不知道为什么它不让我为b和m做多久...我试着在这里查找答案,但没有任何帮助...谢谢
我得到一个错误说
NameError: global name 'long' is not defined
power = long(b) % long(m)
Run Code Online (Sandbox Code Playgroud) 我想在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?或者我在尝试哪种不可能!
谢谢!
我正在尝试在python中实现RC4和DH密钥交换.问题是我不知道如何将python long/int从密钥交换转换为RC4实现所需的字节数组.有没有一种简单的方法可以将long转换为所需的长度字节数组?
更新:忘了提到我正在处理的数字是768位无符号整数.
如何更改ActiveRecord ID的(默认)类型?int不够长,我宁愿长.令我感到惊讶的是,没有:迁移很久 - 是否只使用一些小数?
我正在研究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) 为什么我需要添加"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) long-integer ×10
java ×4
bytearray ×2
c ×2
c++ ×2
int ×2
activerecord ×1
bigint ×1
cmath ×1
hex ×1
math ×1
nameerror ×1
operation ×1
parsing ×1
pi ×1
python ×1
python-3.x ×1
rc4-cipher ×1
standards ×1