【问题标题】:Java Guid Convert into Oracle Raw(16) StringJava Guid 转换为 Oracle Raw(16) 字符串
【发布时间】:2021-10-23 10:55:12
【问题描述】:

如何将 JSON Guid 转换为 Oracle Raw(16) 字符串数据类型?

在 C# Net 中,它使用 ToByteArray()

Java 8 中的等价物是什么?

以下网站将转换,但我需要底层代码。

目标转换:A0824186-1E9C-AE47-95E1-1431542C2133 到字符串 864182A09C1E47AE95E11431542C2133

https://robobunny.com/cgi-bin/guid

  • 标准:A0824186-1E9C-AE47-95E1-1431542C2133
  • 括号内:{A0824186-1E9C-AE47-95E1-1431542C2133}
  • Oracle RAW(16) 格式:864182A09C1E47AE95E11431542C2133
  • Oracle hextoraw HEXTORAW('864182A09C1E47AE95E11431542C2133')
  • SQLServer 使用 Oracle 字节顺序:0x864182A09C1E47AE95E11431542C2133

网络解决方案参考:Convert from Oracle's RAW(16) to .NET's GUID

更新:

有没有办法反转这个函数? ORACLE RAW in string format to Standard GUIDhttps://stackoverflow.com/a/37685066/15435022

另外,我看到了一些 Javascript 源代码,也许找到了转换成 Java 的方法

https://github.com/kanekotic/raw-guid-converter/blob/master/lib/guid-to-raw.js

const buffer = require('buffer/').Buffer,
    transform = require('./helpers').transform,
    patterns = require('./helpers').patterns

    
const convert = (raw) => {
    const pattern = /([0-9A-Fa-f]{8})-([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})-([0-9A-Fa-f]{4})-([0-9A-Fa-f]{12})/i
    let guid_parsed = transform(pattern, raw)
    return `${guid_parsed[0]}${guid_parsed[1]}${guid_parsed[2]}${guid_parsed[3]}${guid_parsed[4]}`.toUpperCase()   
 }
 
module.exports = convert

【问题讨论】:

    标签: java oracle spring-boot guid


    【解决方案1】:

    以下代码库将起作用:

    private byte[] convertToOracleRaw(UUID uuid) {
        String uuidString = uuid.toString().replace("-", "").toUpperCase();
        String finalValue = "";
        finalValue += uuidString.substring(6,8);
        finalValue += uuidString.substring(4,6);
        finalValue += uuidString.substring(2,4);
        finalValue += uuidString.substring(0,2);
        finalValue += uuidString.substring(10,12);
        finalValue += uuidString.substring(8,10);
        finalValue += uuidString.substring(14,16);
        finalValue += uuidString.substring(12,14);
        finalValue += uuidString.substring(16,18);
    
        finalValue += uuidString.substring(18, uuidString.length());  // final string
        return DatatypeConverter.parseHexBinary(finalValue);  // in hex binary
    }
    

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 2014-10-30
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多