我有一系列未签名的字符在c我试图在10号基础上打印,我被卡住了.我认为这将在代码中得到更好的解释,因此,给出:
unsigned char n[3];
char[0] = 1;
char[1] = 2;
char[2] = 3;
Run Code Online (Sandbox Code Playgroud)
我想打印197121.
这对于小型256基数阵列来说是微不足道的.一个可以简单地1*256 ^ 0 + 2*256 ^ 1 + 3*256 ^ 2.
但是,如果我的数组大100字节,那么这很快就会成为一个问题.C中没有100字节大的整数类型,这就是我将数字存储在unsigned char数组中的原因.
我怎么能在10号基地有效地打印出这个数字呢?
我有点迷茫.
我需要将一个大的(对于内置数据类型来说太大)十六进制字符串转换为带有十进制表示的字符串.例如:
std::string sHex = "07AA17C660F3DD1D2A1B48F1B746C148";
std::string sDec; // should end up with: "10187768649047767717933300899576725832"
Run Code Online (Sandbox Code Playgroud)
我目前正在使用c ++ BigInt类,它提供了一种非常简单的方法来实现这一目标(但仅限GPL):
BigInt::Vin vbiTemp(sHex, 16);
sDec = vbiTemp.toStrDec();
Run Code Online (Sandbox Code Playgroud)
没有第三方算术库,有没有简单的方法来进行这种转换?或者你能推荐一个类似简单的免费(非GPL)替代方案(效率无关紧要)?
是否有平台功能可以执行以下操作?
convertBase :: (Num a, Num b) => Int -> Int -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)
将数字从基数'a'转换为基数'b',其中每个列表项是数字中的数字.例如:
convertBase 2 10 [1,1,0,1] = [1, 3]
Run Code Online (Sandbox Code Playgroud)
我希望这是有道理的,如果我能清除任何事情,请告诉我
有没有办法从1到40000中取任何数字并生成8个字符的哈希?
我正在考虑使用base_convert但无法想出一种强制它成为8字符哈希的方法.
任何帮助,将不胜感激!
我正在尝试使用整数数组在JavaScript中实现BigInt类型.现在每个都有一个256的上限.我已经完成了所有整数操作,但我无法弄清楚如何将BigInt转换为它的字符串表示.当然,简单的方法是:
BigInt.prototype.toString = function(base) {
var s = '', total = 0, i, conv = [
,,
'01',
'012',
'0123',
'01234',
'012345',
'0123456',
'01234567',
'012345678',
'0123456789',
,
,
,
,
,
'0123456789abcdef'
];
base = base || 10;
for(i = this.bytes.length - 1; i >= 0; i--) {
total += this.bytes[i] * Math.pow(BigInt.ByteMax, this.bytes.length - 1 - i);
}
while(total) {
s = conv[base].charAt(total % base) + s;
total = Math.floor(total / base);
}
return s || '0';
};
Run Code Online (Sandbox Code Playgroud)
但是当BigInts变 …
我试图在Objective-C中进行Binary,Octal,Decimal和Hexadecimal之间的转换.我在将Octal转换为Decimal时遇到了问题.
我尝试过以下方法:
NSString *decString = [NSString stringWithFormat:@"%d", 077];
Run Code Online (Sandbox Code Playgroud)
它运行正常,按预期返回63,但我的Octal值是NSString.我怎么能告诉电脑它是八进制的呢?
我知道有一个名为"scanHexInt:"的方法,我用它将十六进制转换为十进制,但似乎没有scanOctInt ......
任何帮助,将不胜感激!
您能否提供令人信服的解释或数学证明,以解释为什么以下函数计算给定数字的否定表示?
function quickNegabinary(number) {
var mask = 0xAAAAAAAA;
return ((number + mask) ^ mask).toString(2);
}
Run Code Online (Sandbox Code Playgroud) language-agnostic algorithm binary bit-manipulation base-conversion
因此,我刚刚学习Integer.toString(int x, int radix);并认为它非常棒,因为它使基本转换变得非常容易。
但是,我试图用音标(a-z)来写Base-26,并注意到它Integer.toString()遵循十六进制的示例,因为它从数字开始,然后使用字母(0-p)。
我已经知道如何手动转换为Base-26,我不需要该代码。但是我想知道是否有一种方法可以利用Integer.toString()它,因为它几乎已经完成了所有繁重的工作。
有任何想法吗?
要生成UFI编号,我使用bitset大小为74.要执行UFI生成的第2步,我需要转换此数字:
9 444 732 987 799 592 368 290
(10000000000000000000000000000101000001000001010000011101011111100010100010)
Run Code Online (Sandbox Code Playgroud)
成:
DFSTTM62QN6DTV1
Run Code Online (Sandbox Code Playgroud)
通过将第一个表示转换为基数31并从表中获取等效的字符.
#define PAYLOAD_SIZE 74
// payload = binary of 9444732987799592368290
std::bitset<PAYLOAD_SIZE> bs_payload(payload);
/*
perform modulo 31 to obtain:
12(D), 14(F), 24(S), 25(T), 25, 19, 6, 2, 22, 20, 6, 12, 25, 27, 1
*/
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用外部BigInteger库的情况下对我的bitset执行转换?
编辑:BigInteger即使是干杯和赫斯,我终于完成了一堂课.- 阿尔夫的解决方案就像一个魅力
base_convert()函数似乎没有保留符号。
例如:
var_dump (base_convert ('-100', 10, 10));
Run Code Online (Sandbox Code Playgroud)
此输出为100
有没有一种转换基数而不丢失符号的方法?
base-conversion ×10
c++ ×2
php ×2
algorithm ×1
bigint ×1
biginteger ×1
binary ×1
c ×1
c++11 ×1
cocoa-touch ×1
hash ×1
haskell ×1
ios ×1
java ×1
javascript ×1
objective-c ×1
std-bitset ×1
tostring ×1