为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以使用 ++ 运算符递增长文本,并访问 Java 中的整个长文本范围?

是否可以使用 ++ 运算符递增长文本,并访问 Java 中的整个长文本范围?

慕后森 2022-09-22 19:25:03
我正在写一个临时的小私人“区块链”,用于说明目的,用作教学工具。我已经解决了所有的核心功能,但我正在考虑区块链的一些更奇特的方面,并发现自己想知道Java中的多头。我在应用程序中内置的“矿工”方法使用 ++运算符递增一个 long 类型的随机数值,直到满足条件。我的问题是,如果我想避免(或至少大大延长)耗尽整数随机数空间(2147483647)的机会,如果我初始化起始随机数值,我将传递给Nonce = 0L的miner方法;我可以使用 ++运算符递增它并利用完整的长文本范围吗?我的理解是,比特币在交易中使用了特殊的输入值,并且/或者一些矿工会稍微改变“ExtraNonce”的时间戳,但由于这只是为了说明目的,我不想在应用程序中包含类似的东西。如果有人出于任何原因想看到它们,我可以提供代码片段,任何想法将不胜感激!代码如下:(请不要在我可疑的if/else控制逻辑上嘲笑我,这不是一个合法的生产应用程序,我仍然是java的新手)这是来自调用矿工方法的启动器类的代码: } else if (cliInput.contentEquals("mine")) {                Scanner howMany = new Scanner(System.in);                System.out.println("\n");                System.out.println("Enter number of blocks to mine: \n");                int howManyBlocks = howMany.nextInt();                int numBlocksMined = 0;                while (howManyBlocks >= numBlocksMined) {                    MainChain mc = new MainChain();                    long indexValue = (HashArray.hashArray.size() / 8);                    long timeStamp = mc.getUnixTimestamp();                    String data = helpers.SHA256.generateHash(pubKey + addressKey);                    String previousHash = mc.getPreviousBlockHash();                    ChainBuilder cb = new ChainBuilder();                    cb.miner(indexValue, timeStamp, data, 0, previousHash, 5);                    numBlocksMined++;                }以下是矿工方法的核心:public void miner(long index, long currentTimeMillis, String data, long Nonce, String previousBlockHash, int difficulty) throws InterruptedException {        this.index = index;        this.currentTimeMillis = currentTimeMillis;        this.pszTimeStamp = pszTimeStamp;        this.Nonce = Nonce;        this.previousBlockHash = previousBlockHash;        this.difficulty = difficulty;        this.data = data;        boolean iterator = true;我想知道的是,如果我将0L而不是0传递给矿工方法,我是否可以访问整个范围?
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

运算符按预期方式处理变量。++long



查看完整回答
反对 回复 2022-09-22
?
心有法竹

TA贡献1866条经验 获得超5个赞

是的,对于长 ++,将使用指令集( 对于 int)。laddiadd

参见 6.5 指令


由于您的问题随着您的编辑而完全改变,我仍然看到它。

cb.miner(indexValue, timeStamp, data, 0, previousHash, 5);

如果你传递类似的东西,它将被视为 一个,所以你可以只放在那里,尽管方法参数接受 a(它将在方法体中这样处理)。0intMAX_INTEGERlong



查看完整回答
反对 回复 2022-09-22
  • 2 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信