标签: data-conversion

在 ASP.NET Core 3.1 中设置值比较器

我在我的 DBContext 中使用了“HasConversion”来定义一个 JSonArray(语言/值)并将它保存为一个文本字段,它的作用就像一个魅力,我在我的解决方案中添加了一个新项目,没有任何改变,但后来我得到了添加有关“设置值比较器”的迁移的新错误。

我的模型是这样的:

    public class Brand
    {
        public int Id { get; set; }
        public new IList<LangValue> Name { get; set; } = new List<LangValue>();
    }
Run Code Online (Sandbox Code Playgroud)

DBContext就像:

    modelBuilder.Entity<Brand>(t =>
    {

        t.Property(p => p.Name).HasConversion(
            v => JsonConvert.SerializeObject(v, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include}),
            v => JsonConvert.DeserializeObject<IList<LangValue>>(v, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include})
         );
    });
Run Code Online (Sandbox Code Playgroud)

它运行良好,但在添加新项目后,我在添加迁移时出现黄色错误,并且模型未添加到新数据库中。

Microsoft.EntityFrameworkCore.Model.Validation[10620] 实体类型“品牌”上的属性“名称”是具有值转换器但没有值比较器的集合或枚举类型。设置值比较器以确保正确比较集合/枚举元素。

data-conversion dbcontext asp.net-core jsonconverter entity-framework-core-3.1

14
推荐指数
2
解决办法
6798
查看次数

如何从QVariant获取原始python数据

这些天我只是在学习python和Qt.所以请考虑这将是一个新手问题,但我被困在这里.

import sys
from PyQt4.QtCore import *

data1 = 'string'
data2 = QVariant(data1)
data3 = data2.toPyObject()
Run Code Online (Sandbox Code Playgroud)

我期望data3与data1,'string'相同.但是在我的系统中data3是

PyQt4.QtCore.QString(u'string')
Run Code Online (Sandbox Code Playgroud)

如果我想处理的数据很简单,例如,但是我想处理'dict'类型的数据,所以我需要解决这个问题,这不是什么大问题.

我认为这是编码问题,但找不到如何解决它.

*在每份文件中,我都声明:

#-*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

python pyqt data-conversion qvariant pyqt4

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

以秒为单位获取日期表示?

我正在使用一个API,它需要一个日期参数作为秒数,一个int.

我的问题是我目前存储这个时间java.util.date,我想知道是否有某种方法将java.util.date变量转换为秒,以便我可以将它放入intAPI所需的参数中?

java data-conversion java.util.date

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

将Eigen Vector4类型转换为Vector3的最佳方法是什么?

我想将Eigen中Vector4类型的三个第一个值提取到Vector3类型中.到目前为止,我在for循环中进行此操作.有更聪明的方法吗?

c++ data-conversion eigen

13
推荐指数
2
解决办法
4807
查看次数

将SVG文件转换为Android Vector Drawable XML,同时保持组结构

我想将SVG文件转换为Android Vector Drawable XML.我需要SVG的结构.在SVG将多个元素组合在一起的范围内,我需要将该分组也反映在Android Vector Drawable中.

不幸的是,我发现做SVG到Vector Drawable转换的工具试图以一种摆脱文件结构中现有分组的方式最小化文件大小.

是否有一种聪明的方法来进行转换,使分组树保持完整?

svg android data-conversion android-vectordrawable

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

创建一个 time.Duration from float64 秒

我有一个float64包含以秒为单位的持续时间。我正在寻找一种方法将此值转换为time.Duration. 我能够执行此转换,但我想知道是否没有更优雅的方法。

我的方法是这样的:

    var timeout float64 // input value of float type

    var res time.Duration // result value of time.Duration type

    res += time.Duration(math.Round(timeout)) * time.Second
    timeout -= math.Round(timeout)
    timeout *= 1000
    res += time.Duration(math.Round(timeout)) * time.Millisecond
    timeout -= math.Round(timeout)
    timeout *= 1000
    res += time.Duration(math.Round(timeout)) * time.Microsecond
    timeout -= math.Round(timeout)
    timeout *= 1000
    res += time.Duration(math.Round(timeout)) * time.Nanosecond

    return res
Run Code Online (Sandbox Code Playgroud)

我不喜欢的是它很麻烦而且不可靠。我希望 Go 能够开箱即用地提供类似的东西,并以检测溢出和类似范围违规的方式执行这些转换。似乎Go 还没有出现,但也许我错过了一些明显的东西,因此我的问题。

笔记:

  • 这个问题没有解决我的需求,因为它与相反的转换方式相当相关。这种转换实际上非常轻松,这让我更惊讶的是我需要的转换并不存在。
  • 为什么我不使用毫秒呢?原因很简单:一致性、KISS 原则、最小意外原则。时间的 SI 单位是秒。其他一切都仅源于此,因此我使用它作为默认值。
  • 关于之前的声明的挑剔:Go 本身说“没有对天或更大单位的定义,以避免夏令时时区转换之间的混淆。”。他们没有抓住重点,因为他们仍然有分钟和小时,尽管分钟有 …

time data-conversion go

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

将NSString转换为NSData,反之亦然

我有一个问题,而试图转换NSStringNSData,反之亦然.我试图将加密的字符串存储到我的数据库.为此,我使用AES算法.现在我正在做的是我加密NSData,我正在将其转换为NSString使用以下内容:

// Not woking
NSString *strTemp = [[NSString alloc] initWithData:encData encoding:NSUTF8StringEncoding]; 

// Working
NSString *strTemp = [[NSString alloc] initWithData:encData encoding:NSASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)

为什么NSData在使用时不进行转换NSUTF8StringEncoding.当我尝试NSASCIIStringEncoding使用以下方法转换字符串时的方式相同:

// Not working
[strTemp dataUsingEncoding:NSASCIIStringEncoding];

// Working
[strTemp dataUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

为什么NSASCIIStringEncoding在转换工作不NSStringNSData

iphone data-conversion nsstring nsdata

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

小数,javascript vs C#

我正在尝试将JavaScript哈希函数转换为C#哈希来完成同样的事情.我99%那里,但我遇到了这个自定义函数中使用的小数点障碍.
我不知道为什么但是这个函数将散列值转换为十进制有一些奇怪的原因而且我的问题是生成的小数并不总是相同的长度.C#中的小数值相当长,但长度均匀.我遇到的问题是因为C#中的舍入工作与JavaScript的工作方式不同,我不确切知道在什么小数处要圆来创建等效长度字符串.

以下是两个生成的十进制字符串相互附加的示例.两者都从4,4和3个字符串开始:

4 char string generates 79957.88183577501
4 char string generates 160933.02806113224
3 char string generates 609.9111294990053

使用完全相同的代码C#使用完全相同的输入生成:

79957.88183577500452161331162
160933.02806113221197323204919
609.91112949900524507144149035

如果所有字符串都是相同的长度,这不会是一个问题,但我不知道如何确定何时JS将生成更长的小数.有线索吗?评论?意见?

不幸的是,接收代码仍然是原始的JS,它只是简单地反转过程,因此我必须完美地复制所有输入的最终结果.

编辑:

这是有问题的部分.不要问我为什么会这样,我没有写.

// oString is a full string to be encoded
// oKey is a key to be used for encoding
function completeHash(oString,oKey) {
    if( oKey.length < 5 ) {
        window.alert( 'The key must be at least 5 characters long' );
        return oString;
    }
    var oKeyNum = new Array(), oOutStr = '', oOp = new Array('+=','/=','-=','*= …
Run Code Online (Sandbox Code Playgroud)

javascript c# decimal data-conversion

11
推荐指数
1
解决办法
3158
查看次数

如何在Python 3中将浮点字符串转换为整数

我是整个编码的新手...所以这里.只是想写一个简单的猜数游戏,还要做输入验证.因此只接受整数作为输入.我已经弄清楚如何清除字母字符,所以我可以将数字转换为整数.当我输入一个浮点数时,我遇到了麻烦.我无法让它将浮点数转换为整数.任何帮助表示赞赏.正如我所说,我正在谈论这个编码的第3天,所以试着理解我的小知识.提前致谢.

这是我的主程序的功能.

def validateInput():
    while True:
        global userGuess
        userGuess = input("Please enter a number from 1 to 100. ")
        if userGuess.isalpha() == False:
            userGuess = int(userGuess)
            print(type(userGuess), "at 'isalpha() == False'")
            break
        elif userGuess.isalpha() == True:
            print("Please enter whole numbers only, no words.")
            print(type(userGuess), "at 'isalpha() == True'")
    return userGuess
Run Code Online (Sandbox Code Playgroud)

如果我使用4.3(或任何浮点数)作为输入,这是我得到的错误.

Traceback (most recent call last):
File "C:\\*******.py\line 58, in <module>
validateInput()
File "C:\\*******.py\line 28, in validateInput
userGuess = int(userGuess)
ValueError: invalid literal for int() with base 10: '4.3'
Run Code Online (Sandbox Code Playgroud)

python data-conversion python-3.x floating-point-conversion

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

printf语句中转换的百分比如何?

也许这不属于SO,但我不知道在哪里.

我不得不重新实现printf(3)C不使用,会做的转换对我有什么功能,我几乎做了,但我坚持上%a,我真的不明白发生了什么位置,例如:

printf("%a\n", 3.0); //#=> 0x1.8p+1
printf("%a\n", 3.1); //#=> 0x1.8cccccccccccdp+1
printf("%a\n", 3.2); //#=> 0x1.999999999999ap+1
printf("%a\n", 3.3); //#=> 0x1.a666666666666p+1
printf("%a\n", 3.4); //#=> 0x1.b333333333333p+1
printf("%a\n", 3.5); //#=> 0x1.cp+1
printf("%a\n", 3.6); //#=> 0x1.ccccccccccccdp+1
Run Code Online (Sandbox Code Playgroud)

我当然读到了那个说:

double参数被舍入并在样式[ - ] 0xh.hhhp [+ - ] d中转换为十六进制表示法,其中十六进制点字符后面的位数等于精度规范.

但是,这并不能真正帮助我不明白的过程是转换3.21.999999999999ap+1

我不需要任何代码,但更多的解释.

PS:如果这不是这个问题的地方,你可以指引我到正确的地方吗?

编辑:虽然@juhist答案适用于数字> = 1.0它没有解释如何获得0.0et 之间的数字结果1.0:

printf("%a\n", 0.01); //#=> 0x1.47ae147ae147bp-7
printf("%a\n", 0.1);  //#=> 0x1.999999999999ap-4
printf("%a\n", 0.2);  //#=> 0x1.999999999999ap-3
printf("%a\n", 0.3);  //#=> 0x1.3333333333333p-2 …
Run Code Online (Sandbox Code Playgroud)

c printf hex data-conversion

10
推荐指数
1
解决办法
424
查看次数