long类型python_Python类型long vs C'long long'

1586010002-jmsa.png

I would like to represent a value as a 64bit signed long, such that values larger than (2**63)-1 are represented as negative, however Python long has infinite precision. Is there a 'quick' way for me to achieve this?

解决方案>>> from ctypes import c_longlong as ll

>>> ll(2 ** 63 - 1)

c_longlong(9223372036854775807L)

>>> ll(2 ** 63)

c_longlong(-9223372036854775808L)

>>> ll(2 ** 63).value

-9223372036854775808L

This is really only an option if you know for sure that a signed long long will be 64 bits wide on the target machine(s).

Edit: jorendorff's idea of defining a class for 64 bit numbers is appealing. Ideally you want to minimize the number of explicit class creations.

Using c_longlong, you could do something like this (note: Python 3.x only!):

from ctypes import c_longlong

class ll(int):

def __new__(cls, n):

return int.__new__(cls, c_longlong(n).value)

def __add__(self, other):

return ll(super().__add__(other))

def __radd__(self, other):

return ll(other.__add__(self))

def __sub__(self, other):

return ll(super().__sub__(other))

def __rsub__(self, other):

return ll(other.__sub__(self))

...

In this way the result of ll(2 ** 63) - 1 will indeed be 9223372036854775807. This construction may result in a performance penalty though, so depending on what you want to do exactly, defining a class such as the above may not be worth it. When in doubt, use timeit.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue中富文本编辑器的使用

基于 Vue 的富文本编辑器有很多,例如官方就收录推荐了一些: https://github.com/vuejs/awesome-vue#rich-text-editing 。 这里我们以 element-tiptap 为例。 GitHub 仓库:https://github.com/Leecason/element-tiptap 在线示例&#xff1a…

Vue项目中使用Echarts(一)

Echarts官方文档 1. 安装Echarts 在cmd命令行输入: npm install echarts --save 2. 代码中使用 注意:import 引入echarts 包时,不要使用 import echarts from ‘echarts’ 而要使用import * as echarts from echarts 否则会报错如下: 3. 页…

Google Guava缓存实现接口的限流

一.项目背景 最近项目中需要进行接口保护,防止高并发的情况把系统搞崩,因此需要对一个查询接口进行限流,主要的目的就是限制单位时间内请求此查询的次数,例如1000次,来保护接口。 参考了 开涛的博客聊聊高并发系统限流…

javaweb 常用jar包_使用javaweb写一个登录案例

下载地址:https://gitee.com/dl_shrimp/java_web_login_case.githttps://www.zhihu.com/video/1241780888599699456讲一下如何使用javaweb写一个登录案例Dao就是用来操作数据库的一些类的统称(1)DAO是Data Access Object数据访问接口。数据访…

Vue项目中使用图片裁切器 cropperjs (头像裁切)

cropperjs官方文档 cropperjs结合element-ui 组件后的显示效果: 1. npm 安装 cropperjs cmd命令行输入:npm install cropperjs --save 2. 导入相关js和css文件 import cropperjs/dist/cropper.css import Cropper from cropperjs3. 用块元素(容器&…

跳一跳python源码下载_python 微信跳一跳和源码解读

刚好周末,想研究一下前阵子很火的微信跳一跳 下面进入正文。 本文适用对象为WIN10系统,安卓用户。目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对象,那么跟着我开始操作。我会把我自己的每一步都写下来…

HTML文件上传对象file

window.URL.createObjectURL(fileObj)

Vue项目中使用Echarts(二)

1. 安装&#xff1a; 通过 npm 获取 echarts&#xff0c;npm install echarts --save 2. 最终页面展示效果如下&#xff1a; 三、代码实现 map-demo.vue: <template><!-- 1. 为 ECharts 准备一个具备大小&#xff08;宽高&#xff09;的 DOM --><div ref&quo…

Vue项目中使用百度地图API

百度地图官方文档 1. 申请百度账号和ak 申请 2. 引用百度地图API文件 <script type"text/javascript" src"https://api.map.baidu.com/api?v1.0&&typewebgl&ak您的密钥">3. 设置容器样式 设置容器样式大小 4. 创建地图容器元素 …

8.0/9.0 Email 设置

Email 设置一直都是Odoo的一个坑&#xff0c;巨坑。 先讲结论&#xff0c;发邮件可以用&#xff0c;收还是算了吧 1. 发邮件设置 发的设置相对简单&#xff0c;如果企业邮箱支持catcll all功能&#xff0c;基本不用改动可以直接用&#xff0c;否则需要安装第三方模块&#xff0…

Vue v-model 指令详解以及sync修饰符的使用场景(结合父子组件通信案例)

参考Vue官方文档 一、需求如下&#xff1a; 二、代码如下 三、分步解析&#xff1a; 父组件给子组件传值&#xff1a; 子组件给父组件传值&#xff1a; 四、sync修饰符的使用 vue.js官方文档 如果已经使用了v-model双向绑定了一个数据&#xff0c;但是还想要实现另一个数…

stm32F1使用SD卡实现IAP

最近在做一个项目&#xff0c;想使用uSD卡来实现在应用编程&#xff0c;首先需要一些知识 我所使用的单片机是STM32F103ZE&#xff0c;内部flash&#xff0c;超始地址为0x8000000&#xff0c;大小为0x80000&#xff08;0x80000/1024也就是512kByte&#xff09;要实现IAP&#x…

父组件访问子组件中的数据(父子组件通信案例:父组件访问子组件$refs[‘子组件‘],子组件传递数据给父组件(父组件中使用v-model))

一、需求 二、在父组件upload-cover中&#xff1a; 通过$refs[子组件的ref属性值]就能拿到子组件对象 三、在子组件imgae-list&#xff08;相对于父组件upload-cover来说&#xff0c;image-list组件是子组件&#xff09;中 通过在data中定义一个selected&#xff0c;来保存…

[设计模式]6. C++与职责链模式(chain of rsponsibility pattern)

默默地EEer&#xff0c;原文地址&#xff1a; http://www.cnblogs.com/hebaichuanyeah/p/5625233.html 职责链模式指使多个对象多有机会处理请求&#xff0c;避免请求发送者和接受者的耦合关系。 将这些接受处理的对象连成一条链&#xff0c;并沿着该链处理请求。 一个传说中的…

python删除为空值的列_python如何删除列为空的行

1.摘要 dropna()方法&#xff0c;能够找到DataFrame类型数据的空值&#xff08;缺失值&#xff09;&#xff0c;将空值所在的行/列删除后&#xff0c;将新的DataFrame作为返回值返回。 2.函数详解 函数形式&#xff1a;dropna(axis0, howany, threshNone, subsetNone, inplaceF…

axios请求拦截器、响应拦截器、vue-router路由导航守卫的使用(案例)

axios官方文档 一、请求拦截器 设置headers,给所有请求加上Authorization&#xff1a;token值 二、响应拦截器 直接去访问/article,发现可以进入到article内容管理页面 原因是在vue路由拦截器中&#xff0c;我们是这样来判断用户是否有权限访问除了登录页面之外的其他页面&a…

Vue项目部署,打包发布上线

参考vuecli官方文档 一、构建打包 在发布上线之前&#xff0c;我们需要执行构建打包&#xff0c;将 .less、.vue、.js 等相关资源进行编译打包&#xff0c;转换成浏览器可以直接识别运行的普通 css、js、html。 # yarn run build 或者 yarn build npm run buildVueCLI 会把打…

spring源码编译和导入eclipse

1、下载源码并解压 https://github.com/spring-projects/spring-framework/tree/v3.2.5.RELEASE 2、源码编译 cmd进入spring源码根目录&#xff0c;执行编译源码&#xff1a;gradlew build可能出现问题&#xff1a;&#xff08;1&#xff09;如果出现某些方法找不到&#xff0…

大学python教材思维导图_Python核心知识体系的14张思维导图

本文主要涵盖了 Python 编程的核心知识&#xff08;暂不包括标准库及第三方库&#xff09;。 按顺序依次展示了以下内容的一系列思维导图&#xff1a;基础知识&#xff0c;数据类型&#xff08;数字&#xff0c;字符串&#xff0c;列表&#xff0c;元组&#xff0c;字典&#x…

华为OJ平台——整形数组合并

题目描述&#xff1a; 将两个整型数组按照升序合并&#xff0c;并且过滤掉重复数组元素 输入&#xff1a; 输入说明&#xff0c;按下列顺序输入&#xff1a;    1 输入第一个数组的个数    2 输入第一个数组的数值    3 输入第二个数组的个数    4 输入第二个数…