将uint64值转换为标准C++字符串的最简单方法是什么?我从字符串中检出了assign方法,并且找不到任何接受uint64(8字节)作为参数的人.
我怎样才能做到这一点?
谢谢
我将以下代码作为示例.
#include <iostream>
struct class1
{
uint8_t a;
uint8_t b;
uint16_t c;
uint32_t d;
uint32_t e;
uint32_t f;
uint32_t g;
};
struct class2
{
uint8_t a;
uint8_t b;
uint16_t c;
uint32_t d;
uint32_t e;
uint64_t f;
};
int main(){
std::cout << sizeof(class1) << std::endl;
std::cout << sizeof(class2) << std::endl;
std::cout << sizeof(uint64_t) << std::endl;
std::cout << sizeof(uint32_t) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
版画
20
24
8
4
Run Code Online (Sandbox Code Playgroud)
所以很容易看出一个uint64_t和两个uint32_t一样大,为什么类2有4个额外的字节,如果它们是相同的,除了替换两个uint32_t用于uint64_t.
我正在查看Go中的数字类型。我想使用 uint64 文字。这在 Go 中可能吗?
这是我想如何使用 uint64 文字的示例:
for i := 2; i <= k; i += 1 { // I want i to be a uint64
...
}
Run Code Online (Sandbox Code Playgroud) PHP 5.3.6 32 位(无法移动到 64 位)。
需要比较 2 个值uint64(8 字节无符号整数)。其中一个作为string,另一个作为binary string。
是否有可能转换成字符串表示的uint64以阵列的8个字节,或转换阵列的8个字节到字符串与uint64PHP的32位?
我尝试使用base_convert函数来比较 base-2 字符串表示并得到了奇怪的结果。我知道字节数组包含与uint64相应字符串相同的内容。但我不知道如何确保它们确实代表相同的数字。
这是带有一些实际值的测试代码来说明问题:
function byte_to_base2string($byte)
{
$byte = base_convert($byte, 10, 2);
$byte = str_pad($byte, 8, '0', STR_PAD_LEFT);
return $byte;
}
function print_info($base10_string1, $bin_string2)
{
$bin_string1 = null; // TODO: how to obtain it?
$base2_string1 = base_convert($base10_string1, 10, 2);
$base2_string1 = str_pad($base2_string1, 64, …Run Code Online (Sandbox Code Playgroud) 在以下代码中:
#include <iostream>
...
uint64_t t1 = 1510763846;
uint64_t t2 = 1510763847;
double d1 = (double)t1;
double d2 = (double)t2;
// d1 == t2 => evaluates to true somehow?
// t1 == d2 => evaluates to true somehow?
// d1 == d2 => evaluates to true somehow?
// t1 == t2 => evaluates to false, of course.
std::cout << std::fixed <<
"uint64_t: " << t1 << ", " << t2 << ", " <<
"double: " << d1 << ", …Run Code Online (Sandbox Code Playgroud) 我有一个高度可移植的库(即使没有内核,它也可以在任何地方编译和运行良好),我希望它尽可能保持可移植性。到目前为止,我已经避免使用 64 位数据类型,但我现在可能需要使用它们 \xe2\x80\x93 准确地说,我需要一个 64 位位掩码。
\nuint64_t我从来没有真正考虑过它,而且我也不是一个足够的硬件专家(特别是在嵌入式系统方面),但我现在想知道:使用(或等效地)有什么不便uint_least64_t?我可以想到两种方法来解决我的问题:
当我使用for带有uint64_t作为计数器的循环时,它会永远被卡住,即使条件似乎已经明确定义.
攻击MCVE
#include <stdio.h>
#include <inttypes.h>
int main() {
uint64_t i;
for (i = 15; i >= 0; i--) { printf("%"PRIu64" ", i); }
return 0;
}
Run Code Online (Sandbox Code Playgroud)
部分输出
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 18446744073709551615 18446744073709551614 18446744073709551613 18446744073709551612 18446744073709551611 18446744073709551610 18446744073709551609 18446744073709551608 18446744073709551607 18446744073709551606 18446744073709551605 18446744073709551604 18446744073709551603 18446744073709551602 18446744073709551601 18446744073709551600 18446744073709551599 18446744073709551598 18446744073709551597 18446744073709551596 18446744073709551595 18446744073709551594 18446744073709551593 18446744073709551592 18446744073709551591 18446744073709551590 18446744073709551589 18446744073709551588 18446744073709551587 18446744073709551586 18446744073709551585 18446744073709551584 …Run Code Online (Sandbox Code Playgroud) 我在Windows上使用MPIR 2.4.0(MSVC 2010),我试图将无符号的64位整数添加到mpz_t数字.但是,似乎MPIR/GMP不支持64位整数和mpz_t之间的直接转换.这是否意味着我必须将我的uint64转换为字符串并通过mpz_init_set_str读取?这既不是很有吸引力,也不是很快 - 两次转换都没有.
我错过了什么或者在这里使用的技巧/黑客是什么?
干杯,
菲利普
我需要在内存中存储一个256位的数字并对其执行基本的数学运算.
我如何在C#中执行此操作?我应该使用哪个库?
我正在为C代码编写一个java绑定,我对C不是很熟悉.
我有一个uint64_t,需要将它转换为int.有谁知道这是怎么做到的吗?(我的绑定然后返回一个jint ...)
uint64 ×10
c++ ×4
c ×3
arrays ×1
c# ×1
casting ×1
class ×1
embedded ×1
for-loop ×1
gmp ×1
go ×1
largenumber ×1
literals ×1
long-integer ×1
performance ×1
php ×1
portability ×1
precision ×1
size ×1
string ×1
unsigned ×1
while-loop ×1