标签: uint

uint8_t不需要两位数输入

这是我的测试代码

#include<iostream>
using namespace std;
int main() 
{
    uint8_t a;
    while(1)
    {
        cin>>a;
        if(a == 0) break;
        cout<<"Input is "<<a<<endl;
    }
}  
Run Code Online (Sandbox Code Playgroud)

当我执行(使用我的输入)时,这就是我得到的

1
Input is 1
2
Input is 2
12
Input is 1
Input is 2
0
Input is 0
3  
Input is 3
Run Code Online (Sandbox Code Playgroud)

问题1:它将输入12作为两个独立的输入

问题2:条件是否= = 0不起作用

可能是什么问题?

c++ uint

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

算术运算导致不安全的C#溢出

背景

我们一直在使用从Joe Duffy的"Windows上的Concurrent Programming"(第149页)中逐字复制的一些代码,这些代码已经生产了一年多.代码(如下所示)在我们的Asp.Net Web应用程序中用于探测是否有足够的堆栈空间.我们的网站允许用户使用简单的专有脚本语言编写自己的网页和控制逻辑脚本 - 用户可以编写令人讨厌的东西并导致堆栈溢出异常,因此我们使用Duffy的代码示例来停止执行错误的脚本无法捕获的StackOverflow异常会占用整个IIS AppPool.这一直很有效.

问题

今天下午突然我们的日志填满了System.OverflowException错误.我们对该服务器的每个请求都有相同的异常.一个快速的IIS重置解决了这个问题.

异常类型:System.OverflowException

异常消息:算术运算导致溢出.

堆栈跟踪:在C:\ SVN\LiquidHtml\Trunk\LiquidHtmlFlowManager\StackManagement.cs中的LiquidHtmlFlowManager.StackManagement.CheckForSufficientStack(UInt64字节)处的System.IntPtr..ctor(Int64值)处:第47行

代码:

public static class StackManagement
{
    [StructLayout(LayoutKind.Sequential)]
    struct MEMORY_BASIC_INFORMATION
    {
        public uint BaseAddress;
        public uint AllocationBase;
        public uint AllocationProtect;
        public uint RegionSize;
        public uint State;
        public uint Protect;
        public uint Type;
    };

    //We are conservative here. We assume that the platform needs a 
    //whole 16 pages to respond to stack overflow (using an X86/X64
    //page-size, not IA64). That's 64KB, which means that for very
    //small stacks …
Run Code Online (Sandbox Code Playgroud)

c# stack-overflow unsafe overflow uint

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

在Python中将10位无符号整数转换为有符号整数

我有一个 0-1023 范围内的数字列表。我想将它们转换为整数,例如 1023 映射到 -1,1022 映射到 -2 等。而 0, 1, 2, ....511 保持不变。

我想出了一个简单的方法:

def convert(x):
    return (x - 2**9) % 2**10 - 2**9
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

python int uint

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

是否在golang atomic中对uint8进行读写?

在标题中,是关于uint8,atomic的读写操作吗?从逻辑上讲,它必须是单个cpu指令,显然是为8位变量进行读写.但无论如何,两个内核可以同时从内存中读写,是否有可能以这种方式创建过时的数据?

go atomicity uint

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

sscanf似乎在uint变量和c中的int变量上表现不同

我正在开发一个微控制器程序,并希望使用从字符串中读取数字到整数变量sscanf().问题是我在使用int声明vs uint8_t或时得到了不同的行为uint16_t.

int用于变量声明:

 #include <stdio.h>
 #include <stdint.h>
 int main()
 {
     int power;
     int hr;
     int cadence;
     sscanf("204 67 94","%d %d %d",&power, &hr, &cadence);
     printf("power: %d, hr: %d, cadence: %d", power, hr, cadence);        
     return 0;
 }
Run Code Online (Sandbox Code Playgroud)

当放入https://www.onlinegdb.com/返回时:

power: 204, hr: 67, cadence: 94

...Program finished with exit code 0
Press ENTER to exit console.
Run Code Online (Sandbox Code Playgroud)

这是我期望它表现的方式.


而使用uint8_tuint16_t整数:

#include <stdio.h>
#include <stdint.h>
int main()
{
    uint16_t power;
    uint8_t …
Run Code Online (Sandbox Code Playgroud)

c int scanf uint

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

如何强制PHP处理类似于uint的数字

我有一些C#代码看起来像这样:

uint a = 0x9E3779B9;
a += (uint)(url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k + 3] << 24));
Run Code Online (Sandbox Code Playgroud)

在那段代码之后,a == 228 452 386

现在我正在尝试将此C#代码转换为PHP,但在PHP中,数字不会以相同的方式溢出:

$a = 0x9E3779B9;
$a += ($url[$k+0] + ($url[$k+1] << 8) + ($url[$k+2] << 16) + ($url[$k+3] << 24));
Run Code Online (Sandbox Code Playgroud)

在那段代码之后,$ a == 4 523 419 682

在两个coses中,"url"被视为ascii值的数组.返回相同的结果,直到$ a被添加到第二行的结果.那时C#uint溢出到2.28亿.PHP变得"聪明"并提出了"正确"的答案.

但我想要C#给出的溢出答案.我该怎么办?

php c# overflow uint32 uint

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

{(Int)}与UInt8不同

目前使用beta 5版本的swift并且必须对+=运营商进行更改

func dealCards1() -> [Int] {
    for i in 0...25{
        comp1PlayDeck += shuffledDeck[i]
    }
    return comp1PlayDeck
}
Run Code Online (Sandbox Code Playgroud)

这引发了'[(Int)]' is not identical to 'UInt8'我不太清楚是做了什么改变但是这很令人困惑.

int uint swift xcode6

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

Swift:为什么UInt.max == -1

正如标题状态,LLDB报告的值UInt.max是一个UInt-1,这似乎不合逻辑的高度.考虑到let uint: UInt = -1甚至没有编译,这怎么可能呢?我没有看到任何方法在运行时具有负值的UInt,因为如果给定负值,初始化程序将崩溃.我想知道UInt的实际最大值.

uint swift

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

如何将 HEX 字符串转换为 UInt16?

我有一个十六进制字符串 d285,我想将其转换为 UInt16,请指导我如何转换它。我试过这个

let buffer = UInt16("\(UInt8(text, radix: 16)!)")
return Data(bytes: (buffer?.bigEndian.toBytes)!)
Run Code Online (Sandbox Code Playgroud)

但它不起作用

uint ios uint16 uint8t swift

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

在 Javascript 中将 Uint8Array 转换为 BigInt

我发现了 3 种将 Uint8Array 转换为 BigInt 的方法,由于某种原因,它们都给出了不同的结果。您能告诉我哪一种是正确的以及我应该使用哪一种吗?

  1. 使用bigint 转换库。我们可以使用bigintConversion.bufToBigint()函数来获取 BigInt。实现如下:
export function bufToBigint (buf: ArrayBuffer|TypedArray|Buffer): bigint {
  let bits = 8n
  if (ArrayBuffer.isView(buf)) bits = BigInt(buf.BYTES_PER_ELEMENT * 8)
  else buf = new Uint8Array(buf)

  let ret = 0n
  for (const i of (buf as TypedArray|Buffer).values()) {
    const bi = BigInt(i)
    ret = (ret << bits) + bi
  }
  return ret
}
Run Code Online (Sandbox Code Playgroud)
  1. 使用数据视图:
let view = new DataView(arr.buffer, 0);
let result = view.getBigUint64(0, true);
Run Code Online (Sandbox Code Playgroud)
  1. 使用 FOR 循环:
let …
Run Code Online (Sandbox Code Playgroud)

javascript biginteger data-conversion uint typescript

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