- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在用 C 编写 postgres 的扩展。
该函数将从hexstring中接收一个bytea,将bytea转换为char*,然后对该char*进行一些操作,最后返回一个数字。
在 SQL 级别,我有类似的东西:
select my_function(decode(**hex_string**, 'hex')) AS result;
在C级,我有:
bytea *newval = PG_GETARG_BYTEA_P(0);
unsigned char *byte_array = (unsigned char *) VARDATA(newval);
具有以下 2056 字节大小的 hex_string
484c08020000000045422275433435354222a56424534257334242335285345034366432525334333312464268247645b421352562714488235244462423347733333443333764333276343362522524277251533276542454332725235237251552363532232264325822663374483725224343332535227437229446363344422332634444294363815262622b237457236261312655522255533443745345434495535422423538333446152155443333434234632436332479252464522373412835526433584342352523542366227634847374546642323642365338353653a71533345343364234473144362353389232342332322443413532926224952324553425345433643333432344453432542511426513332244536425546335a42744433d324545464526443425415423242423432323433559342336435334953562673627797554634424254244666543493355436341125323452424245373639334354246513531447741247333542743155323233734558844332447322225324132333354523613553151415435271352453365342254232324221414234778332232464534592347534465231314313638453768343683563556541356633572632333364255442632143431635514553373376436143543346262153643342742436465233322525683423123e446544336357342331433443452462425125224476333412446381334464225594443233924433344244313433444426564663554424346733543374552635355543542333416639317251946583222445742341673644642242643473353543461394347765233337733234533255443633522b452149435433424327422665423347553315144237745265223393433343635476442255435554251430424333343324445425342774632a4228363444444443332434220334343273341663652824153342424336644324311235732525324325158343263572565134424214633234532683342322432457543353333232339522354533464533144363252324332654353345754163727552357534532734753232263535342435343363162269235314322422455675262333482233328346333534693356736533423455a45323753135336353323235354345452546435232233665442454533424552745943451623225384362532345324832445434363334542323424321424234332352253435337244524313527454244474444633325347364262534336751353422335243357463127254335634355164463527514872315633739376433422332335a623432624647452044584223643279344345a3425743333744436342463323433641456553235b5645446363465441b33744423675652357e224654555345451725341234471422742335322195244454532243443554332735324352524324325538362123642444343733429345443555132233422658434323318322224812932523225472542222253824567143533934422355564357556544364143582456552a5723633444343373143233232365313457333335c854303223435555376224527522837373432423636175514265729563262724363277553723345655343543644154222243544584235166433234144427432422353223161443225236552236247233344444673254346533332622536836233436524125642424346312831738524337135282253821395545134317236235463527335424225512342442327435876642613664244d514536635365842545133354453224a166632541354457334124224353536547422331543364273124364322734625292685535624235542432444542683b365353344253434363623634111325142362255346447425653656376413463621664322354624552825434226546553711223344382254339694331a345443733528422333233464224343302562636431323453441155432336355556322342624453332737553545436243222c552322231244334321322725226733475682554c22346442473655521543516465465448334224422467733355535543425333132234323422342327836322421563825334624422443373344482523526345348334543148b533426615333354344536242544344743342472843442258644834363462354424363d24c53424536537434343443526324592341423544a3335341325465964443452334322746a336533326413622533422334367451846143234444154323256a61342334334466a9454235284262536232443314514243344433324137222437532175432446364352554334247435442428743735436344235213249423463132b655133627457443533431352332156453564333554547512335657a515425244222640334341643435944324453337235444752332645133633252423164843422335823421322352752122424354212554467474422534143833552b352253232225224153263363334323633a5471673366411342545233727337439482874525135124343341524462335283445c63736631322124546553433242252263a134123146127422735733344265413547565536122239b35403323442335635232234423424424435332a2363343723354333443433462233823434183456b344444444445442942248425434331243444433634647333634233494464242247143252391342a396443523229233536223563992333355a233342343182435324497332744885233732533375454264833433454273236443214223473333264393232272242443522491583234426323266634631344364326
我刚在 c 中得到一个 4 字节的 char*
byte_array content : HL
byte_array length : 4
问题是我的代码有什么问题,我怎样才能得到预期的 char*(2056 字节)?
最佳答案
简短回答:您的字节不包含可打印的 C 字符串。
长答案:您的字节显然包含空字符,它们是 C 字符串的结束标记。因此,您的程序打印第一个字符,直到第一个 0。由于您的十六进制字符串包含 4 个连续的零,因此它似乎也不是有效的 C 字符串;无论可能的编码如何。
您可以使用 encode(bytea_field, 'escape
)` 将字节转换为 Postgres 文本值,并从您的 C 代码中将其作为文本读取。但是由于零字节,这也不会打印更长的字符串。
关于c - Postgres : how to convert a bytea field into c internal string char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48365575/
这个问题在这里已经有了答案: How to make a property protected AND internal in C#? (8 个答案) 关闭 9 年前。 我需要声明一个既受又 内部保
我对在 Kotlin 1.3 中使用 Strings.isNullOrEmpty 导入 jdk.internal.joptsimple.internal.Strings.isNullOrEmpty 的
我有一个项目,实习生单元测试应该位于与被测源代码不同的目录树中。有点像这样: projectRoot projectRoot/src projectRoot/tests projectRoot/tes
如何在功能测试中访问浏览器的主要 JavaScript 范围?例如,我想获取对 Dojo 小部件的引用并检查它的属性。例如,在浏览器 JavaScript 控制台中,我可以运行: dijit.
public class TestClass { protected internal int FieldA; internal protected int FieldB; }
我想创建一个内部自动属性: internal bool IP { get; protected internal set; } 我认为可以使 setter protected 或 protected
java.lang.NoSuchMethodError: okhttp3.internal.Internal.initializeInstanceForTests() When creating a
我正在尝试使用 intern 来测试在 node.js 下运行的 dojo 应用程序 我的 intern.js 配置文件是这样的: define({ loader: {
我在 Raspbian wheezy 上的 nginx 1.2.1-2.2 有点问题。我认为它是在我更改站点可用/默认文件中的索引后开始的。以下是相关文件: nginx.conf user www-d
我在尝试加载 Visual studio 2012 时遇到了此错误,遇到了异常。这可能是由扩展引起的,并且在 C:\Users\~\AppData 中给出了附加信息的位置\Roaming\Micros
我正在将一个项目迁移到 Java9,在我切换到新的 Java 版本后,测试开始失败,看起来 PowerMock 正在尝试访问一些它无法访问的类。 Tests run: 1, Failures: 0,
该触发器用于检测进度中的顺序是否已更新,并有助于更新进度的概览状态和完成时间。 但是当发生内部错误时,它并不总是有效,如下所示: Error: 13 INTERNAL: An internal err
当我尝试将包含一些 JavaScript 的项目导入工作区时(使用 Eclipse 的 Neon.M6 版本),出现此错误: eclipse.buildId=4.6.0.I20160317-0200
我在尝试访问 FullContact API 服务器时收到此错误。我正在使用 okhttp 2.7.5 和 okhttp-urlconnection 2.7.5 以及改造 1.9.0。 Caused
当我试图读取一个以前版本的 pandas 保存的 pickle 文件时,它产生了一个 ImportError。 ImportError: No module named 'pandas.core.in
我正在将一个项目迁移到 Java9,在我切换到新的 Java 版本后测试开始失败,似乎 PowerMock 正在尝试访问它无法访问的一些类。 Tests run: 1, Failures: 0, Er
我正在尝试设置 Lumen - 建立在 Laravel 组件之上的“微框架”。服务器端有 nginx + php-fpm。 这是我的 nginx 配置: server { server_nam
在我们的项目中,我们决定在我们的项目中使用最新的 fmt 版本 (6.2.0) 并主要使用 printf 功能,因为我们在广泛使用 printf 的地方进行日志记录。 我使用 fmt 包中包含的 CM
我正在使用 Mockito jar 为 Groovy 编写 Junit 测试用例,但它给了我以下异常: java.lang.NoSuchMethodError: org.mockito.interna
我们的应用程序使用 Google 集合中的 MapMaker 类,并且我们遇到了以下异常,但仅限于使用 webstart 的 OS X 10.4。从应用程序包启动时以及在 OS X 10.5 和 Wi
我是一名优秀的程序员,十分优秀!